<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />
<title>dlnd_image_classification_ipynb（副本）</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

<style type="text/css">
    /*!
*
* Twitter Bootstrap
*
*/
/*!
 * Bootstrap v3.3.7 (http://getbootstrap.com)
 * Copyright 2011-2016 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background-color: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: textfield;
  box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
  *,
  *:before,
  *:after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .navbar {
    display: none;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
  content: "\002a";
}
.glyphicon-plus:before {
  content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
  content: "\20ac";
}
.glyphicon-minus:before {
  content: "\2212";
}
.glyphicon-cloud:before {
  content: "\2601";
}
.glyphicon-envelope:before {
  content: "\2709";
}
.glyphicon-pencil:before {
  content: "\270f";
}
.glyphicon-glass:before {
  content: "\e001";
}
.glyphicon-music:before {
  content: "\e002";
}
.glyphicon-search:before {
  content: "\e003";
}
.glyphicon-heart:before {
  content: "\e005";
}
.glyphicon-star:before {
  content: "\e006";
}
.glyphicon-star-empty:before {
  content: "\e007";
}
.glyphicon-user:before {
  content: "\e008";
}
.glyphicon-film:before {
  content: "\e009";
}
.glyphicon-th-large:before {
  content: "\e010";
}
.glyphicon-th:before {
  content: "\e011";
}
.glyphicon-th-list:before {
  content: "\e012";
}
.glyphicon-ok:before {
  content: "\e013";
}
.glyphicon-remove:before {
  content: "\e014";
}
.glyphicon-zoom-in:before {
  content: "\e015";
}
.glyphicon-zoom-out:before {
  content: "\e016";
}
.glyphicon-off:before {
  content: "\e017";
}
.glyphicon-signal:before {
  content: "\e018";
}
.glyphicon-cog:before {
  content: "\e019";
}
.glyphicon-trash:before {
  content: "\e020";
}
.glyphicon-home:before {
  content: "\e021";
}
.glyphicon-file:before {
  content: "\e022";
}
.glyphicon-time:before {
  content: "\e023";
}
.glyphicon-road:before {
  content: "\e024";
}
.glyphicon-download-alt:before {
  content: "\e025";
}
.glyphicon-download:before {
  content: "\e026";
}
.glyphicon-upload:before {
  content: "\e027";
}
.glyphicon-inbox:before {
  content: "\e028";
}
.glyphicon-play-circle:before {
  content: "\e029";
}
.glyphicon-repeat:before {
  content: "\e030";
}
.glyphicon-refresh:before {
  content: "\e031";
}
.glyphicon-list-alt:before {
  content: "\e032";
}
.glyphicon-lock:before {
  content: "\e033";
}
.glyphicon-flag:before {
  content: "\e034";
}
.glyphicon-headphones:before {
  content: "\e035";
}
.glyphicon-volume-off:before {
  content: "\e036";
}
.glyphicon-volume-down:before {
  content: "\e037";
}
.glyphicon-volume-up:before {
  content: "\e038";
}
.glyphicon-qrcode:before {
  content: "\e039";
}
.glyphicon-barcode:before {
  content: "\e040";
}
.glyphicon-tag:before {
  content: "\e041";
}
.glyphicon-tags:before {
  content: "\e042";
}
.glyphicon-book:before {
  content: "\e043";
}
.glyphicon-bookmark:before {
  content: "\e044";
}
.glyphicon-print:before {
  content: "\e045";
}
.glyphicon-camera:before {
  content: "\e046";
}
.glyphicon-font:before {
  content: "\e047";
}
.glyphicon-bold:before {
  content: "\e048";
}
.glyphicon-italic:before {
  content: "\e049";
}
.glyphicon-text-height:before {
  content: "\e050";
}
.glyphicon-text-width:before {
  content: "\e051";
}
.glyphicon-align-left:before {
  content: "\e052";
}
.glyphicon-align-center:before {
  content: "\e053";
}
.glyphicon-align-right:before {
  content: "\e054";
}
.glyphicon-align-justify:before {
  content: "\e055";
}
.glyphicon-list:before {
  content: "\e056";
}
.glyphicon-indent-left:before {
  content: "\e057";
}
.glyphicon-indent-right:before {
  content: "\e058";
}
.glyphicon-facetime-video:before {
  content: "\e059";
}
.glyphicon-picture:before {
  content: "\e060";
}
.glyphicon-map-marker:before {
  content: "\e062";
}
.glyphicon-adjust:before {
  content: "\e063";
}
.glyphicon-tint:before {
  content: "\e064";
}
.glyphicon-edit:before {
  content: "\e065";
}
.glyphicon-share:before {
  content: "\e066";
}
.glyphicon-check:before {
  content: "\e067";
}
.glyphicon-move:before {
  content: "\e068";
}
.glyphicon-step-backward:before {
  content: "\e069";
}
.glyphicon-fast-backward:before {
  content: "\e070";
}
.glyphicon-backward:before {
  content: "\e071";
}
.glyphicon-play:before {
  content: "\e072";
}
.glyphicon-pause:before {
  content: "\e073";
}
.glyphicon-stop:before {
  content: "\e074";
}
.glyphicon-forward:before {
  content: "\e075";
}
.glyphicon-fast-forward:before {
  content: "\e076";
}
.glyphicon-step-forward:before {
  content: "\e077";
}
.glyphicon-eject:before {
  content: "\e078";
}
.glyphicon-chevron-left:before {
  content: "\e079";
}
.glyphicon-chevron-right:before {
  content: "\e080";
}
.glyphicon-plus-sign:before {
  content: "\e081";
}
.glyphicon-minus-sign:before {
  content: "\e082";
}
.glyphicon-remove-sign:before {
  content: "\e083";
}
.glyphicon-ok-sign:before {
  content: "\e084";
}
.glyphicon-question-sign:before {
  content: "\e085";
}
.glyphicon-info-sign:before {
  content: "\e086";
}
.glyphicon-screenshot:before {
  content: "\e087";
}
.glyphicon-remove-circle:before {
  content: "\e088";
}
.glyphicon-ok-circle:before {
  content: "\e089";
}
.glyphicon-ban-circle:before {
  content: "\e090";
}
.glyphicon-arrow-left:before {
  content: "\e091";
}
.glyphicon-arrow-right:before {
  content: "\e092";
}
.glyphicon-arrow-up:before {
  content: "\e093";
}
.glyphicon-arrow-down:before {
  content: "\e094";
}
.glyphicon-share-alt:before {
  content: "\e095";
}
.glyphicon-resize-full:before {
  content: "\e096";
}
.glyphicon-resize-small:before {
  content: "\e097";
}
.glyphicon-exclamation-sign:before {
  content: "\e101";
}
.glyphicon-gift:before {
  content: "\e102";
}
.glyphicon-leaf:before {
  content: "\e103";
}
.glyphicon-fire:before {
  content: "\e104";
}
.glyphicon-eye-open:before {
  content: "\e105";
}
.glyphicon-eye-close:before {
  content: "\e106";
}
.glyphicon-warning-sign:before {
  content: "\e107";
}
.glyphicon-plane:before {
  content: "\e108";
}
.glyphicon-calendar:before {
  content: "\e109";
}
.glyphicon-random:before {
  content: "\e110";
}
.glyphicon-comment:before {
  content: "\e111";
}
.glyphicon-magnet:before {
  content: "\e112";
}
.glyphicon-chevron-up:before {
  content: "\e113";
}
.glyphicon-chevron-down:before {
  content: "\e114";
}
.glyphicon-retweet:before {
  content: "\e115";
}
.glyphicon-shopping-cart:before {
  content: "\e116";
}
.glyphicon-folder-close:before {
  content: "\e117";
}
.glyphicon-folder-open:before {
  content: "\e118";
}
.glyphicon-resize-vertical:before {
  content: "\e119";
}
.glyphicon-resize-horizontal:before {
  content: "\e120";
}
.glyphicon-hdd:before {
  content: "\e121";
}
.glyphicon-bullhorn:before {
  content: "\e122";
}
.glyphicon-bell:before {
  content: "\e123";
}
.glyphicon-certificate:before {
  content: "\e124";
}
.glyphicon-thumbs-up:before {
  content: "\e125";
}
.glyphicon-thumbs-down:before {
  content: "\e126";
}
.glyphicon-hand-right:before {
  content: "\e127";
}
.glyphicon-hand-left:before {
  content: "\e128";
}
.glyphicon-hand-up:before {
  content: "\e129";
}
.glyphicon-hand-down:before {
  content: "\e130";
}
.glyphicon-circle-arrow-right:before {
  content: "\e131";
}
.glyphicon-circle-arrow-left:before {
  content: "\e132";
}
.glyphicon-circle-arrow-up:before {
  content: "\e133";
}
.glyphicon-circle-arrow-down:before {
  content: "\e134";
}
.glyphicon-globe:before {
  content: "\e135";
}
.glyphicon-wrench:before {
  content: "\e136";
}
.glyphicon-tasks:before {
  content: "\e137";
}
.glyphicon-filter:before {
  content: "\e138";
}
.glyphicon-briefcase:before {
  content: "\e139";
}
.glyphicon-fullscreen:before {
  content: "\e140";
}
.glyphicon-dashboard:before {
  content: "\e141";
}
.glyphicon-paperclip:before {
  content: "\e142";
}
.glyphicon-heart-empty:before {
  content: "\e143";
}
.glyphicon-link:before {
  content: "\e144";
}
.glyphicon-phone:before {
  content: "\e145";
}
.glyphicon-pushpin:before {
  content: "\e146";
}
.glyphicon-usd:before {
  content: "\e148";
}
.glyphicon-gbp:before {
  content: "\e149";
}
.glyphicon-sort:before {
  content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
  content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
  content: "\e152";
}
.glyphicon-sort-by-order:before {
  content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
  content: "\e154";
}
.glyphicon-sort-by-attributes:before {
  content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
  content: "\e156";
}
.glyphicon-unchecked:before {
  content: "\e157";
}
.glyphicon-expand:before {
  content: "\e158";
}
.glyphicon-collapse-down:before {
  content: "\e159";
}
.glyphicon-collapse-up:before {
  content: "\e160";
}
.glyphicon-log-in:before {
  content: "\e161";
}
.glyphicon-flash:before {
  content: "\e162";
}
.glyphicon-log-out:before {
  content: "\e163";
}
.glyphicon-new-window:before {
  content: "\e164";
}
.glyphicon-record:before {
  content: "\e165";
}
.glyphicon-save:before {
  content: "\e166";
}
.glyphicon-open:before {
  content: "\e167";
}
.glyphicon-saved:before {
  content: "\e168";
}
.glyphicon-import:before {
  content: "\e169";
}
.glyphicon-export:before {
  content: "\e170";
}
.glyphicon-send:before {
  content: "\e171";
}
.glyphicon-floppy-disk:before {
  content: "\e172";
}
.glyphicon-floppy-saved:before {
  content: "\e173";
}
.glyphicon-floppy-remove:before {
  content: "\e174";
}
.glyphicon-floppy-save:before {
  content: "\e175";
}
.glyphicon-floppy-open:before {
  content: "\e176";
}
.glyphicon-credit-card:before {
  content: "\e177";
}
.glyphicon-transfer:before {
  content: "\e178";
}
.glyphicon-cutlery:before {
  content: "\e179";
}
.glyphicon-header:before {
  content: "\e180";
}
.glyphicon-compressed:before {
  content: "\e181";
}
.glyphicon-earphone:before {
  content: "\e182";
}
.glyphicon-phone-alt:before {
  content: "\e183";
}
.glyphicon-tower:before {
  content: "\e184";
}
.glyphicon-stats:before {
  content: "\e185";
}
.glyphicon-sd-video:before {
  content: "\e186";
}
.glyphicon-hd-video:before {
  content: "\e187";
}
.glyphicon-subtitles:before {
  content: "\e188";
}
.glyphicon-sound-stereo:before {
  content: "\e189";
}
.glyphicon-sound-dolby:before {
  content: "\e190";
}
.glyphicon-sound-5-1:before {
  content: "\e191";
}
.glyphicon-sound-6-1:before {
  content: "\e192";
}
.glyphicon-sound-7-1:before {
  content: "\e193";
}
.glyphicon-copyright-mark:before {
  content: "\e194";
}
.glyphicon-registration-mark:before {
  content: "\e195";
}
.glyphicon-cloud-download:before {
  content: "\e197";
}
.glyphicon-cloud-upload:before {
  content: "\e198";
}
.glyphicon-tree-conifer:before {
  content: "\e199";
}
.glyphicon-tree-deciduous:before {
  content: "\e200";
}
.glyphicon-cd:before {
  content: "\e201";
}
.glyphicon-save-file:before {
  content: "\e202";
}
.glyphicon-open-file:before {
  content: "\e203";
}
.glyphicon-level-up:before {
  content: "\e204";
}
.glyphicon-copy:before {
  content: "\e205";
}
.glyphicon-paste:before {
  content: "\e206";
}
.glyphicon-alert:before {
  content: "\e209";
}
.glyphicon-equalizer:before {
  content: "\e210";
}
.glyphicon-king:before {
  content: "\e211";
}
.glyphicon-queen:before {
  content: "\e212";
}
.glyphicon-pawn:before {
  content: "\e213";
}
.glyphicon-bishop:before {
  content: "\e214";
}
.glyphicon-knight:before {
  content: "\e215";
}
.glyphicon-baby-formula:before {
  content: "\e216";
}
.glyphicon-tent:before {
  content: "\26fa";
}
.glyphicon-blackboard:before {
  content: "\e218";
}
.glyphicon-bed:before {
  content: "\e219";
}
.glyphicon-apple:before {
  content: "\f8ff";
}
.glyphicon-erase:before {
  content: "\e221";
}
.glyphicon-hourglass:before {
  content: "\231b";
}
.glyphicon-lamp:before {
  content: "\e223";
}
.glyphicon-duplicate:before {
  content: "\e224";
}
.glyphicon-piggy-bank:before {
  content: "\e225";
}
.glyphicon-scissors:before {
  content: "\e226";
}
.glyphicon-bitcoin:before {
  content: "\e227";
}
.glyphicon-btc:before {
  content: "\e227";
}
.glyphicon-xbt:before {
  content: "\e227";
}
.glyphicon-yen:before {
  content: "\00a5";
}
.glyphicon-jpy:before {
  content: "\00a5";
}
.glyphicon-ruble:before {
  content: "\20bd";
}
.glyphicon-rub:before {
  content: "\20bd";
}
.glyphicon-scale:before {
  content: "\e230";
}
.glyphicon-ice-lolly:before {
  content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
  content: "\e232";
}
.glyphicon-education:before {
  content: "\e233";
}
.glyphicon-option-horizontal:before {
  content: "\e234";
}
.glyphicon-option-vertical:before {
  content: "\e235";
}
.glyphicon-menu-hamburger:before {
  content: "\e236";
}
.glyphicon-modal-window:before {
  content: "\e237";
}
.glyphicon-oil:before {
  content: "\e238";
}
.glyphicon-grain:before {
  content: "\e239";
}
.glyphicon-sunglasses:before {
  content: "\e240";
}
.glyphicon-text-size:before {
  content: "\e241";
}
.glyphicon-text-color:before {
  content: "\e242";
}
.glyphicon-text-background:before {
  content: "\e243";
}
.glyphicon-object-align-top:before {
  content: "\e244";
}
.glyphicon-object-align-bottom:before {
  content: "\e245";
}
.glyphicon-object-align-horizontal:before {
  content: "\e246";
}
.glyphicon-object-align-left:before {
  content: "\e247";
}
.glyphicon-object-align-vertical:before {
  content: "\e248";
}
.glyphicon-object-align-right:before {
  content: "\e249";
}
.glyphicon-triangle-right:before {
  content: "\e250";
}
.glyphicon-triangle-left:before {
  content: "\e251";
}
.glyphicon-triangle-bottom:before {
  content: "\e252";
}
.glyphicon-triangle-top:before {
  content: "\e253";
}
.glyphicon-console:before {
  content: "\e254";
}
.glyphicon-superscript:before {
  content: "\e255";
}
.glyphicon-subscript:before {
  content: "\e256";
}
.glyphicon-menu-left:before {
  content: "\e257";
}
.glyphicon-menu-right:before {
  content: "\e258";
}
.glyphicon-menu-down:before {
  content: "\e259";
}
.glyphicon-menu-up:before {
  content: "\e260";
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.42857143;
  color: #000;
  background-color: #fff;
}
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
a {
  color: #337ab7;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #23527c;
  text-decoration: underline;
}
a:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
figure {
  margin: 0;
}
img {
  vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  display: block;
  max-width: 100%;
  height: auto;
}
.img-rounded {
  border-radius: 3px;
}
.img-thumbnail {
  padding: 4px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  display: inline-block;
  max-width: 100%;
  height: auto;
}
.img-circle {
  border-radius: 50%;
}
hr {
  margin-top: 18px;
  margin-bottom: 18px;
  border: 0;
  border-top: 1px solid #eeeeee;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
[role="button"] {
  cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: inherit;
  font-weight: 500;
  line-height: 1.1;
  color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
  font-weight: normal;
  line-height: 1;
  color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
  margin-top: 18px;
  margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
  font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
  margin-top: 9px;
  margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
  font-size: 75%;
}
h1,
.h1 {
  font-size: 33px;
}
h2,
.h2 {
  font-size: 27px;
}
h3,
.h3 {
  font-size: 23px;
}
h4,
.h4 {
  font-size: 17px;
}
h5,
.h5 {
  font-size: 13px;
}
h6,
.h6 {
  font-size: 12px;
}
p {
  margin: 0 0 9px;
}
.lead {
  margin-bottom: 18px;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .lead {
    font-size: 19.5px;
  }
}
small,
.small {
  font-size: 92%;
}
mark,
.mark {
  background-color: #fcf8e3;
  padding: .2em;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.text-nowrap {
  white-space: nowrap;
}
.text-lowercase {
  text-transform: lowercase;
}
.text-uppercase {
  text-transform: uppercase;
}
.text-capitalize {
  text-transform: capitalize;
}
.text-muted {
  color: #777777;
}
.text-primary {
  color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
  color: #286090;
}
.text-success {
  color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
  color: #2b542c;
}
.text-info {
  color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
  color: #245269;
}
.text-warning {
  color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
  color: #66512c;
}
.text-danger {
  color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
  color: #843534;
}
.bg-primary {
  color: #fff;
  background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
  background-color: #286090;
}
.bg-success {
  background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
  background-color: #c1e2b3;
}
.bg-info {
  background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
  background-color: #afd9ee;
}
.bg-warning {
  background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
  background-color: #f7ecb5;
}
.bg-danger {
  background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
  background-color: #e4b9b9;
}
.page-header {
  padding-bottom: 8px;
  margin: 36px 0 18px;
  border-bottom: 1px solid #eeeeee;
}
ul,
ol {
  margin-top: 0;
  margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
  margin-bottom: 0;
}
.list-unstyled {
  padding-left: 0;
  list-style: none;
}
.list-inline {
  padding-left: 0;
  list-style: none;
  margin-left: -5px;
}
.list-inline > li {
  display: inline-block;
  padding-left: 5px;
  padding-right: 5px;
}
dl {
  margin-top: 0;
  margin-bottom: 18px;
}
dt,
dd {
  line-height: 1.42857143;
}
dt {
  font-weight: bold;
}
dd {
  margin-left: 0;
}
@media (min-width: 541px) {
  .dl-horizontal dt {
    float: left;
    width: 160px;
    clear: left;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .dl-horizontal dd {
    margin-left: 180px;
  }
}
abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #777777;
}
.initialism {
  font-size: 90%;
  text-transform: uppercase;
}
blockquote {
  padding: 9px 18px;
  margin: 0 0 18px;
  font-size: inherit;
  border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
  margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
  display: block;
  font-size: 80%;
  line-height: 1.42857143;
  color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
  content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #eeeeee;
  border-left: 0;
  text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
  content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
  content: '\00A0 \2014';
}
address {
  margin-bottom: 18px;
  font-style: normal;
  line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
  font-family: monospace;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  background-color: #f9f2f4;
  border-radius: 2px;
}
kbd {
  padding: 2px 4px;
  font-size: 90%;
  color: #888;
  background-color: transparent;
  border-radius: 1px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
  padding: 0;
  font-size: 100%;
  font-weight: bold;
  box-shadow: none;
}
pre {
  display: block;
  padding: 8.5px;
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 1.42857143;
  word-break: break-all;
  word-wrap: break-word;
  color: #333333;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border-radius: 2px;
}
pre code {
  padding: 0;
  font-size: inherit;
  color: inherit;
  white-space: pre-wrap;
  background-color: transparent;
  border-radius: 0;
}
.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
@media (min-width: 768px) {
  .container {
    width: 768px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 940px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1140px;
  }
}
.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
.row {
  margin-left: 0px;
  margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 0px;
  padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #777777;
  text-align: left;
}
th {
  text-align: left;
}
.table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 18px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}
.table > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
  border-top: 0;
}
.table > tbody + tbody {
  border-top: 2px solid #ddd;
}
.table .table {
  background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
  padding: 5px;
}
.table-bordered {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
  border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
  background-color: #f5f5f5;
}
table col[class*="col-"] {
  position: static;
  float: none;
  display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
  position: static;
  float: none;
  display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
  background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
  background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
  background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
  background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
  background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
  background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
  background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
  background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
  background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
  background-color: #ebcccc;
}
.table-responsive {
  overflow-x: auto;
  min-height: 0.01%;
}
@media screen and (max-width: 767px) {
  .table-responsive {
    width: 100%;
    margin-bottom: 13.5px;
    overflow-y: hidden;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    border: 1px solid #ddd;
  }
  .table-responsive > .table {
    margin-bottom: 0;
  }
  .table-responsive > .table > thead > tr > th,
  .table-responsive > .table > tbody > tr > th,
  .table-responsive > .table > tfoot > tr > th,
  .table-responsive > .table > thead > tr > td,
  .table-responsive > .table > tbody > tr > td,
  .table-responsive > .table > tfoot > tr > td {
    white-space: nowrap;
  }
  .table-responsive > .table-bordered {
    border: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:first-child,
  .table-responsive > .table-bordered > tbody > tr > th:first-child,
  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  .table-responsive > .table-bordered > thead > tr > td:first-child,
  .table-responsive > .table-bordered > tbody > tr > td:first-child,
  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
    border-left: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:last-child,
  .table-responsive > .table-bordered > tbody > tr > th:last-child,
  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  .table-responsive > .table-bordered > thead > tr > td:last-child,
  .table-responsive > .table-bordered > tbody > tr > td:last-child,
  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
    border-right: 0;
  }
  .table-responsive > .table-bordered > tbody > tr:last-child > th,
  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
  .table-responsive > .table-bordered > tbody > tr:last-child > td,
  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
    border-bottom: 0;
  }
}
fieldset {
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}
legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 18px;
  font-size: 19.5px;
  line-height: inherit;
  color: #333333;
  border: 0;
  border-bottom: 1px solid #e5e5e5;
}
label {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: bold;
}
input[type="search"] {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  line-height: normal;
}
input[type="file"] {
  display: block;
}
input[type="range"] {
  display: block;
  width: 100%;
}
select[multiple],
select[size] {
  height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
output {
  display: block;
  padding-top: 7px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
}
.form-control {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.form-control:-ms-input-placeholder {
  color: #999;
}
.form-control::-webkit-input-placeholder {
  color: #999;
}
.form-control::-ms-expand {
  border: 0;
  background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
  background-color: #eeeeee;
  opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
  cursor: not-allowed;
}
textarea.form-control {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type="date"].form-control,
  input[type="time"].form-control,
  input[type="datetime-local"].form-control,
  input[type="month"].form-control {
    line-height: 32px;
  }
  input[type="date"].input-sm,
  input[type="time"].input-sm,
  input[type="datetime-local"].input-sm,
  input[type="month"].input-sm,
  .input-group-sm input[type="date"],
  .input-group-sm input[type="time"],
  .input-group-sm input[type="datetime-local"],
  .input-group-sm input[type="month"] {
    line-height: 30px;
  }
  input[type="date"].input-lg,
  input[type="time"].input-lg,
  input[type="datetime-local"].input-lg,
  input[type="month"].input-lg,
  .input-group-lg input[type="date"],
  .input-group-lg input[type="time"],
  .input-group-lg input[type="datetime-local"],
  .input-group-lg input[type="month"] {
    line-height: 45px;
  }
}
.form-group {
  margin-bottom: 15px;
}
.radio,
.checkbox {
  position: relative;
  display: block;
  margin-top: 10px;
  margin-bottom: 10px;
}
.radio label,
.checkbox label {
  min-height: 18px;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
  margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  vertical-align: middle;
  font-weight: normal;
  cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
  cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
  cursor: not-allowed;
}
.form-control-static {
  padding-top: 7px;
  padding-bottom: 7px;
  margin-bottom: 0;
  min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
  padding-left: 0;
  padding-right: 0;
}
.input-sm {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-sm {
  height: 30px;
  line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
  height: auto;
}
.form-group-sm .form-control {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.form-group-sm select.form-control {
  height: 30px;
  line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
  height: auto;
}
.form-group-sm .form-control-static {
  height: 30px;
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.input-lg {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-lg {
  height: 45px;
  line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
  height: auto;
}
.form-group-lg .form-control {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.form-group-lg select.form-control {
  height: 45px;
  line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
  height: auto;
}
.form-group-lg .form-control-static {
  height: 45px;
  min-height: 35px;
  padding: 11px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.has-feedback {
  position: relative;
}
.has-feedback .form-control {
  padding-right: 40px;
}
.form-control-feedback {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  width: 32px;
  height: 32px;
  line-height: 32px;
  text-align: center;
  pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
  width: 45px;
  height: 45px;
  line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
  width: 30px;
  height: 30px;
  line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
  color: #3c763d;
}
.has-success .form-control {
  border-color: #3c763d;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
  border-color: #2b542c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
  color: #3c763d;
  border-color: #3c763d;
  background-color: #dff0d8;
}
.has-success .form-control-feedback {
  color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
  color: #8a6d3b;
}
.has-warning .form-control {
  border-color: #8a6d3b;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
  border-color: #66512c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
  color: #8a6d3b;
  border-color: #8a6d3b;
  background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
  color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
  color: #a94442;
}
.has-error .form-control {
  border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
  border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
  color: #a94442;
  border-color: #a94442;
  background-color: #f2dede;
}
.has-error .form-control-feedback {
  color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
  top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
  top: 0;
}
.help-block {
  display: block;
  margin-top: 5px;
  margin-bottom: 10px;
  color: #404040;
}
@media (min-width: 768px) {
  .form-inline .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .form-inline .form-control-static {
    display: inline-block;
  }
  .form-inline .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .form-inline .input-group .input-group-addon,
  .form-inline .input-group .input-group-btn,
  .form-inline .input-group .form-control {
    width: auto;
  }
  .form-inline .input-group > .form-control {
    width: 100%;
  }
  .form-inline .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio label,
  .form-inline .checkbox label {
    padding-left: 0;
  }
  .form-inline .radio input[type="radio"],
  .form-inline .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
  min-height: 25px;
}
.form-horizontal .form-group {
  margin-left: 0px;
  margin-right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .control-label {
    text-align: right;
    margin-bottom: 0;
    padding-top: 7px;
  }
}
.form-horizontal .has-feedback .form-control-feedback {
  right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .form-group-lg .control-label {
    padding-top: 11px;
    font-size: 17px;
  }
}
@media (min-width: 768px) {
  .form-horizontal .form-group-sm .control-label {
    padding-top: 6px;
    font-size: 12px;
  }
}
.btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  border-radius: 2px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
  color: #333;
  text-decoration: none;
}
.btn:active,
.btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
  pointer-events: none;
}
.btn-default {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.btn-default:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
  background-color: #fff;
  border-color: #ccc;
}
.btn-default .badge {
  color: #fff;
  background-color: #333;
}
.btn-primary {
  color: #fff;
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
  color: #fff;
  background-color: #286090;
  border-color: #122b40;
}
.btn-primary:hover {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
  color: #fff;
  background-color: #204d74;
  border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary .badge {
  color: #337ab7;
  background-color: #fff;
}
.btn-success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.btn-success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.btn-info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.btn-info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.btn-warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.btn-warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.btn-danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.btn-danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger .badge {
  color: #d9534f;
  background-color: #fff;
}
.btn-link {
  color: #337ab7;
  font-weight: normal;
  border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
  border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
  color: #23527c;
  text-decoration: underline;
  background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
  color: #777777;
  text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.btn-sm,
.btn-group-sm > .btn {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-xs,
.btn-group-xs > .btn {
  padding: 1px 5px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn-block + .btn-block {
  margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
  width: 100%;
}
.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
  -o-transition: opacity 0.15s linear;
  transition: opacity 0.15s linear;
}
.fade.in {
  opacity: 1;
}
.collapse {
  display: none;
}
.collapse.in {
  display: block;
}
tr.collapse.in {
  display: table-row;
}
tbody.collapse.in {
  display: table-row-group;
}
.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition-property: height, visibility;
  transition-property: height, visibility;
  -webkit-transition-duration: 0.35s;
  transition-duration: 0.35s;
  -webkit-transition-timing-function: ease;
  transition-timing-function: ease;
}
.caret {
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 2px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-top: 4px solid \9;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
}
.dropup,
.dropdown {
  position: relative;
}
.dropdown-toggle:focus {
  outline: 0;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 13px;
  text-align: left;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 2px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}
.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}
.dropdown-menu .divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.dropdown-menu > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.42857143;
  color: #333333;
  white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #337ab7;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #777777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  cursor: not-allowed;
}
.open > .dropdown-menu {
  display: block;
}
.open > a {
  outline: 0;
}
.dropdown-menu-right {
  left: auto;
  right: 0;
}
.dropdown-menu-left {
  left: 0;
  right: auto;
}
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 12px;
  line-height: 1.42857143;
  color: #777777;
  white-space: nowrap;
}
.dropdown-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 990;
}
.pull-right > .dropdown-menu {
  right: 0;
  left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px dashed;
  border-bottom: 4px solid \9;
  content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 2px;
}
@media (min-width: 541px) {
  .navbar-right .dropdown-menu {
    left: auto;
    right: 0;
  }
  .navbar-right .dropdown-menu-left {
    left: 0;
    right: auto;
  }
}
.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
  z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
  margin-left: -1px;
}
.btn-toolbar {
  margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
  float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
  margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group > .btn:first-child {
  margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group > .btn-group {
  float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn .caret {
  margin-left: 0;
}
.btn-lg .caret {
  border-width: 5px 5px 0;
  border-bottom-width: 0;
}
.dropup .btn-lg .caret {
  border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
  display: block;
  float: none;
  width: 100%;
  max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
  float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
  margin-top: -1px;
  margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.btn-group-justified {
  display: table;
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
  float: none;
  display: table-cell;
  width: 1%;
}
.btn-group-justified > .btn-group .btn {
  width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
  left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*="col-"] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  line-height: 45px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
  height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
  height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.input-group-addon {
  padding: 6px 12px;
  font-size: 13px;
  font-weight: normal;
  line-height: 1;
  color: #555555;
  text-align: center;
  background-color: #eeeeee;
  border: 1px solid #ccc;
  border-radius: 2px;
}
.input-group-addon.input-sm {
  padding: 5px 10px;
  font-size: 12px;
  border-radius: 1px;
}
.input-group-addon.input-lg {
  padding: 10px 16px;
  font-size: 17px;
  border-radius: 3px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
  margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.input-group-addon:last-child {
  border-left: 0;
}
.input-group-btn {
  position: relative;
  font-size: 0;
  white-space: nowrap;
}
.input-group-btn > .btn {
  position: relative;
}
.input-group-btn > .btn + .btn {
  margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
  z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
  margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
  z-index: 2;
  margin-left: -1px;
}
.nav {
  margin-bottom: 0;
  padding-left: 0;
  list-style: none;
}
.nav > li {
  position: relative;
  display: block;
}
.nav > li > a {
  position: relative;
  display: block;
  padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.nav > li.disabled > a {
  color: #777777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
  color: #777777;
  text-decoration: none;
  background-color: transparent;
  cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  background-color: #eeeeee;
  border-color: #337ab7;
}
.nav .nav-divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.nav > li > a > img {
  max-width: none;
}
.nav-tabs {
  border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
  float: left;
  margin-bottom: -1px;
}
.nav-tabs > li > a {
  margin-right: 2px;
  line-height: 1.42857143;
  border: 1px solid transparent;
  border-radius: 2px 2px 0 0;
}
.nav-tabs > li > a:hover {
  border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
  color: #555555;
  background-color: #fff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
  cursor: default;
}
.nav-tabs.nav-justified {
  width: 100%;
  border-bottom: 0;
}
.nav-tabs.nav-justified > li {
  float: none;
}
.nav-tabs.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-tabs.nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs.nav-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs.nav-justified > .active > a,
  .nav-tabs.nav-justified > .active > a:hover,
  .nav-tabs.nav-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 2px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}
.nav-justified {
  width: 100%;
}
.nav-justified > li {
  float: none;
}
.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs-justified {
  border-bottom: 0;
}
.nav-tabs-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs-justified > .active > a,
  .nav-tabs-justified > .active > a:hover,
  .nav-tabs-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}
.nav-tabs .dropdown-menu {
  margin-top: -1px;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar {
  position: relative;
  min-height: 30px;
  margin-bottom: 18px;
  border: 1px solid transparent;
}
@media (min-width: 541px) {
  .navbar {
    border-radius: 2px;
  }
}
@media (min-width: 541px) {
  .navbar-header {
    float: left;
  }
}
.navbar-collapse {
  overflow-x: visible;
  padding-right: 0px;
  padding-left: 0px;
  border-top: 1px solid transparent;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  -webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
  overflow-y: auto;
}
@media (min-width: 541px) {
  .navbar-collapse {
    width: auto;
    border-top: 0;
    box-shadow: none;
  }
  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }
  .navbar-collapse.in {
    overflow-y: visible;
  }
  .navbar-fixed-top .navbar-collapse,
  .navbar-static-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    padding-left: 0;
    padding-right: 0;
  }
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
  max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
  .navbar-fixed-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    max-height: 200px;
  }
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
  margin-right: 0px;
  margin-left: 0px;
}
@media (min-width: 541px) {
  .container > .navbar-header,
  .container-fluid > .navbar-header,
  .container > .navbar-collapse,
  .container-fluid > .navbar-collapse {
    margin-right: 0;
    margin-left: 0;
  }
}
.navbar-static-top {
  z-index: 1000;
  border-width: 0 0 1px;
}
@media (min-width: 541px) {
  .navbar-static-top {
    border-radius: 0;
  }
}
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}
@media (min-width: 541px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}
.navbar-fixed-top {
  top: 0;
  border-width: 0 0 1px;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0;
  border-width: 1px 0 0;
}
.navbar-brand {
  float: left;
  padding: 6px 0px;
  font-size: 17px;
  line-height: 18px;
  height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
  text-decoration: none;
}
.navbar-brand > img {
  display: block;
}
@media (min-width: 541px) {
  .navbar > .container .navbar-brand,
  .navbar > .container-fluid .navbar-brand {
    margin-left: 0px;
  }
}
.navbar-toggle {
  position: relative;
  float: right;
  margin-right: 0px;
  padding: 9px 10px;
  margin-top: -2px;
  margin-bottom: -2px;
  background-color: transparent;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 2px;
}
.navbar-toggle:focus {
  outline: 0;
}
.navbar-toggle .icon-bar {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
  margin-top: 4px;
}
@media (min-width: 541px) {
  .navbar-toggle {
    display: none;
  }
}
.navbar-nav {
  margin: 3px 0px;
}
.navbar-nav > li > a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 18px;
}
@media (max-width: 540px) {
  .navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    box-shadow: none;
  }
  .navbar-nav .open .dropdown-menu > li > a,
  .navbar-nav .open .dropdown-menu .dropdown-header {
    padding: 5px 15px 5px 25px;
  }
  .navbar-nav .open .dropdown-menu > li > a {
    line-height: 18px;
  }
  .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-image: none;
  }
}
@media (min-width: 541px) {
  .navbar-nav {
    float: left;
    margin: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    padding-top: 6px;
    padding-bottom: 6px;
  }
}
.navbar-form {
  margin-left: 0px;
  margin-right: 0px;
  padding: 10px 0px;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-top: -1px;
  margin-bottom: -1px;
}
@media (min-width: 768px) {
  .navbar-form .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .navbar-form .form-control-static {
    display: inline-block;
  }
  .navbar-form .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .navbar-form .input-group .input-group-addon,
  .navbar-form .input-group .input-group-btn,
  .navbar-form .input-group .form-control {
    width: auto;
  }
  .navbar-form .input-group > .form-control {
    width: 100%;
  }
  .navbar-form .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio,
  .navbar-form .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio label,
  .navbar-form .checkbox label {
    padding-left: 0;
  }
  .navbar-form .radio input[type="radio"],
  .navbar-form .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .navbar-form .has-feedback .form-control-feedback {
    top: 0;
  }
}
@media (max-width: 540px) {
  .navbar-form .form-group {
    margin-bottom: 5px;
  }
  .navbar-form .form-group:last-child {
    margin-bottom: 0;
  }
}
@media (min-width: 541px) {
  .navbar-form {
    width: auto;
    border: 0;
    margin-left: 0;
    margin-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
.navbar-nav > li > .dropdown-menu {
  margin-top: 0;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  margin-bottom: 0;
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.navbar-btn {
  margin-top: -1px;
  margin-bottom: -1px;
}
.navbar-btn.btn-sm {
  margin-top: 0px;
  margin-bottom: 0px;
}
.navbar-btn.btn-xs {
  margin-top: 4px;
  margin-bottom: 4px;
}
.navbar-text {
  margin-top: 6px;
  margin-bottom: 6px;
}
@media (min-width: 541px) {
  .navbar-text {
    float: left;
    margin-left: 0px;
    margin-right: 0px;
  }
}
@media (min-width: 541px) {
  .navbar-left {
    float: left !important;
    float: left;
  }
  .navbar-right {
    float: right !important;
    float: right;
    margin-right: 0px;
  }
  .navbar-right ~ .navbar-right {
    margin-right: 0;
  }
}
.navbar-default {
  background-color: #f8f8f8;
  border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
  color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
  color: #5e5e5e;
  background-color: transparent;
}
.navbar-default .navbar-text {
  color: #777;
}
.navbar-default .navbar-nav > li > a {
  color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: #333;
  background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
  color: #555;
  background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
  color: #ccc;
  background-color: transparent;
}
.navbar-default .navbar-toggle {
  border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
  background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
  background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
  border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
  background-color: #e7e7e7;
  color: #555;
}
@media (max-width: 540px) {
  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
    color: #777;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #333;
    background-color: transparent;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #555;
    background-color: #e7e7e7;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #ccc;
    background-color: transparent;
  }
}
.navbar-default .navbar-link {
  color: #777;
}
.navbar-default .navbar-link:hover {
  color: #333;
}
.navbar-default .btn-link {
  color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
  color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
  color: #ccc;
}
.navbar-inverse {
  background-color: #222;
  border-color: #080808;
}
.navbar-inverse .navbar-brand {
  color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-text {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
  color: #fff;
  background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
  color: #444;
  background-color: transparent;
}
.navbar-inverse .navbar-toggle {
  border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
  background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
  background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
  border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
  background-color: #080808;
  color: #fff;
}
@media (max-width: 540px) {
  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
    border-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
    color: #9d9d9d;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #fff;
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #fff;
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #444;
    background-color: transparent;
  }
}
.navbar-inverse .navbar-link {
  color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
  color: #fff;
}
.navbar-inverse .btn-link {
  color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
  color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
  color: #444;
}
.breadcrumb {
  padding: 8px 15px;
  margin-bottom: 18px;
  list-style: none;
  background-color: #f5f5f5;
  border-radius: 2px;
}
.breadcrumb > li {
  display: inline-block;
}
.breadcrumb > li + li:before {
  content: "/\00a0";
  padding: 0 5px;
  color: #5e5e5e;
}
.breadcrumb > .active {
  color: #777777;
}
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 18px 0;
  border-radius: 2px;
}
.pagination > li {
  display: inline;
}
.pagination > li > a,
.pagination > li > span {
  position: relative;
  float: left;
  padding: 6px 12px;
  line-height: 1.42857143;
  text-decoration: none;
  color: #337ab7;
  background-color: #fff;
  border: 1px solid #ddd;
  margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
  margin-left: 0;
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
  border-bottom-right-radius: 2px;
  border-top-right-radius: 2px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
  z-index: 2;
  color: #23527c;
  background-color: #eeeeee;
  border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  z-index: 3;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
  cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
  color: #777777;
  background-color: #fff;
  border-color: #ddd;
  cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
  border-bottom-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
  border-bottom-left-radius: 1px;
  border-top-left-radius: 1px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
  border-bottom-right-radius: 1px;
  border-top-right-radius: 1px;
}
.pager {
  padding-left: 0;
  margin: 18px 0;
  list-style: none;
  text-align: center;
}
.pager li {
  display: inline;
}
.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.pager .next > a,
.pager .next > span {
  float: right;
}
.pager .previous > a,
.pager .previous > span {
  float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #777777;
  background-color: #fff;
  cursor: not-allowed;
}
.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}
a.label:hover,
a.label:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.label:empty {
  display: none;
}
.btn .label {
  position: relative;
  top: -1px;
}
.label-default {
  background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
  background-color: #5e5e5e;
}
.label-primary {
  background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
  background-color: #286090;
}
.label-success {
  background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
  background-color: #449d44;
}
.label-info {
  background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
  background-color: #31b0d5;
}
.label-warning {
  background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
  background-color: #ec971f;
}
.label-danger {
  background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
  background-color: #c9302c;
}
.badge {
  display: inline-block;
  min-width: 10px;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: #777777;
  border-radius: 10px;
}
.badge:empty {
  display: none;
}
.btn .badge {
  position: relative;
  top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
  top: 0;
  padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
  color: #337ab7;
  background-color: #fff;
}
.list-group-item > .badge {
  float: right;
}
.list-group-item > .badge + .badge {
  margin-right: 5px;
}
.nav-pills > li > a > .badge {
  margin-left: 3px;
}
.jumbotron {
  padding-top: 30px;
  padding-bottom: 30px;
  margin-bottom: 30px;
  color: inherit;
  background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
  color: inherit;
}
.jumbotron p {
  margin-bottom: 15px;
  font-size: 20px;
  font-weight: 200;
}
.jumbotron > hr {
  border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
  border-radius: 3px;
  padding-left: 0px;
  padding-right: 0px;
}
.jumbotron .container {
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
    padding-left: 60px;
    padding-right: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
    font-size: 59px;
  }
}
.thumbnail {
  display: block;
  padding: 4px;
  margin-bottom: 18px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: border 0.2s ease-in-out;
  -o-transition: border 0.2s ease-in-out;
  transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
  margin-left: auto;
  margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
  border-color: #337ab7;
}
.thumbnail .caption {
  padding: 9px;
  color: #000;
}
.alert {
  padding: 15px;
  margin-bottom: 18px;
  border: 1px solid transparent;
  border-radius: 2px;
}
.alert h4 {
  margin-top: 0;
  color: inherit;
}
.alert .alert-link {
  font-weight: bold;
}
.alert > p,
.alert > ul {
  margin-bottom: 0;
}
.alert > p + p {
  margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
  padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
  position: relative;
  top: -2px;
  right: -21px;
  color: inherit;
}
.alert-success {
  background-color: #dff0d8;
  border-color: #d6e9c6;
  color: #3c763d;
}
.alert-success hr {
  border-top-color: #c9e2b3;
}
.alert-success .alert-link {
  color: #2b542c;
}
.alert-info {
  background-color: #d9edf7;
  border-color: #bce8f1;
  color: #31708f;
}
.alert-info hr {
  border-top-color: #a6e1ec;
}
.alert-info .alert-link {
  color: #245269;
}
.alert-warning {
  background-color: #fcf8e3;
  border-color: #faebcc;
  color: #8a6d3b;
}
.alert-warning hr {
  border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
  color: #66512c;
}
.alert-danger {
  background-color: #f2dede;
  border-color: #ebccd1;
  color: #a94442;
}
.alert-danger hr {
  border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
  color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
.progress {
  overflow: hidden;
  height: 18px;
  margin-bottom: 18px;
  background-color: #f5f5f5;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  font-size: 12px;
  line-height: 18px;
  color: #fff;
  text-align: center;
  background-color: #337ab7;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-transition: width 0.6s ease;
  -o-transition: width 0.6s ease;
  transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
  animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
  background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
  background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
  background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
  background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
  margin-top: 15px;
}
.media:first-child {
  margin-top: 0;
}
.media,
.media-body {
  zoom: 1;
  overflow: hidden;
}
.media-body {
  width: 10000px;
}
.media-object {
  display: block;
}
.media-object.img-thumbnail {
  max-width: none;
}
.media-right,
.media > .pull-right {
  padding-left: 10px;
}
.media-left,
.media > .pull-left {
  padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
  display: table-cell;
  vertical-align: top;
}
.media-middle {
  vertical-align: middle;
}
.media-bottom {
  vertical-align: bottom;
}
.media-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.media-list {
  padding-left: 0;
  list-style: none;
}
.list-group {
  margin-bottom: 20px;
  padding-left: 0;
}
.list-group-item {
  position: relative;
  display: block;
  padding: 10px 15px;
  margin-bottom: -1px;
  background-color: #fff;
  border: 1px solid #ddd;
}
.list-group-item:first-child {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
}
.list-group-item:last-child {
  margin-bottom: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
  color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
  color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
  text-decoration: none;
  color: #555;
  background-color: #f5f5f5;
}
button.list-group-item {
  width: 100%;
  text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
  background-color: #eeeeee;
  color: #777777;
  cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
  color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
  color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  z-index: 2;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
  color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
  color: #c7ddef;
}
.list-group-item-success {
  color: #3c763d;
  background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
  color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
  color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
  color: #3c763d;
  background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
  color: #fff;
  background-color: #3c763d;
  border-color: #3c763d;
}
.list-group-item-info {
  color: #31708f;
  background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
  color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
  color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
  color: #31708f;
  background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
  color: #fff;
  background-color: #31708f;
  border-color: #31708f;
}
.list-group-item-warning {
  color: #8a6d3b;
  background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
  color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
  color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
  color: #8a6d3b;
  background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
  color: #fff;
  background-color: #8a6d3b;
  border-color: #8a6d3b;
}
.list-group-item-danger {
  color: #a94442;
  background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
  color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
  color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
  color: #a94442;
  background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
  color: #fff;
  background-color: #a94442;
  border-color: #a94442;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}
.panel {
  margin-bottom: 18px;
  background-color: #fff;
  border: 1px solid transparent;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
  padding: 15px;
}
.panel-heading {
  padding: 10px 15px;
  border-bottom: 1px solid transparent;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel-heading > .dropdown .dropdown-toggle {
  color: inherit;
}
.panel-title {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 15px;
  color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
  color: inherit;
}
.panel-footer {
  padding: 10px 15px;
  background-color: #f5f5f5;
  border-top: 1px solid #ddd;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
  margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
  border-width: 1px 0;
  border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
  border-top: 0;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
  border-bottom: 0;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
  border-top-width: 0;
}
.list-group + .panel-footer {
  border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
  margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
  padding-left: 15px;
  padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
  border-top-left-radius: 1px;
  border-top-right-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
  border-top-right-radius: 1px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
  border-bottom-left-radius: 1px;
  border-bottom-right-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
  border-bottom-right-radius: 1px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
  border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
  border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
  border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
  border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
  border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
  border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
  border-bottom: 0;
}
.panel > .table-responsive {
  border: 0;
  margin-bottom: 0;
}
.panel-group {
  margin-bottom: 18px;
}
.panel-group .panel {
  margin-bottom: 0;
  border-radius: 2px;
}
.panel-group .panel + .panel {
  margin-top: 5px;
}
.panel-group .panel-heading {
  border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
  border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
  border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
  border-bottom: 1px solid #ddd;
}
.panel-default {
  border-color: #ddd;
}
.panel-default > .panel-heading {
  color: #333333;
  background-color: #f5f5f5;
  border-color: #ddd;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ddd;
}
.panel-default > .panel-heading .badge {
  color: #f5f5f5;
  background-color: #333333;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ddd;
}
.panel-primary {
  border-color: #337ab7;
}
.panel-primary > .panel-heading {
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #337ab7;
}
.panel-primary > .panel-heading .badge {
  color: #337ab7;
  background-color: #fff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #337ab7;
}
.panel-success {
  border-color: #d6e9c6;
}
.panel-success > .panel-heading {
  color: #3c763d;
  background-color: #dff0d8;
  border-color: #d6e9c6;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #d6e9c6;
}
.panel-success > .panel-heading .badge {
  color: #dff0d8;
  background-color: #3c763d;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #d6e9c6;
}
.panel-info {
  border-color: #bce8f1;
}
.panel-info > .panel-heading {
  color: #31708f;
  background-color: #d9edf7;
  border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #bce8f1;
}
.panel-info > .panel-heading .badge {
  color: #d9edf7;
  background-color: #31708f;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #bce8f1;
}
.panel-warning {
  border-color: #faebcc;
}
.panel-warning > .panel-heading {
  color: #8a6d3b;
  background-color: #fcf8e3;
  border-color: #faebcc;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #faebcc;
}
.panel-warning > .panel-heading .badge {
  color: #fcf8e3;
  background-color: #8a6d3b;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #faebcc;
}
.panel-danger {
  border-color: #ebccd1;
}
.panel-danger > .panel-heading {
  color: #a94442;
  background-color: #f2dede;
  border-color: #ebccd1;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ebccd1;
}
.panel-danger > .panel-heading .badge {
  color: #f2dede;
  background-color: #a94442;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ebccd1;
}
.embed-responsive {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
  overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  height: 100%;
  width: 100%;
  border: 0;
}
.embed-responsive-16by9 {
  padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
  padding-bottom: 75%;
}
.well {
  min-height: 20px;
  padding: 19px;
  margin-bottom: 20px;
  background-color: #f5f5f5;
  border: 1px solid #e3e3e3;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
  border-color: #ddd;
  border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
  padding: 24px;
  border-radius: 3px;
}
.well-sm {
  padding: 9px;
  border-radius: 1px;
}
.close {
  float: right;
  font-size: 19.5px;
  font-weight: bold;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  opacity: 0.2;
  filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.5;
  filter: alpha(opacity=50);
}
button.close {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.modal-open {
  overflow: hidden;
}
.modal {
  display: none;
  overflow: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1050;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  -o-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -moz-transition: -moz-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
.modal-open .modal {
  overflow-x: hidden;
  overflow-y: auto;
}
.modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}
.modal-content {
  position: relative;
  background-color: #fff;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  background-clip: padding-box;
  outline: 0;
}
.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: #000;
}
.modal-backdrop.fade {
  opacity: 0;
  filter: alpha(opacity=0);
}
.modal-backdrop.in {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
.modal-header {
  padding: 15px;
  border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
  margin-top: -2px;
}
.modal-title {
  margin: 0;
  line-height: 1.42857143;
}
.modal-body {
  position: relative;
  padding: 15px;
}
.modal-footer {
  padding: 15px;
  text-align: right;
  border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
  margin-left: 5px;
  margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
  margin-left: 0;
}
.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}
@media (min-width: 768px) {
  .modal-dialog {
    width: 600px;
    margin: 30px auto;
  }
  .modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  }
  .modal-sm {
    width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg {
    width: 900px;
  }
}
.tooltip {
  position: absolute;
  z-index: 1070;
  display: block;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 12px;
  opacity: 0;
  filter: alpha(opacity=0);
}
.tooltip.in {
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.tooltip.top {
  margin-top: -3px;
  padding: 5px 0;
}
.tooltip.right {
  margin-left: 3px;
  padding: 0 5px;
}
.tooltip.bottom {
  margin-top: 3px;
  padding: 5px 0;
}
.tooltip.left {
  margin-left: -3px;
  padding: 0 5px;
}
.tooltip-inner {
  max-width: 200px;
  padding: 3px 8px;
  color: #fff;
  text-align: center;
  background-color: #000;
  border-radius: 2px;
}
.tooltip-arrow {
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.tooltip.top .tooltip-arrow {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
  bottom: 0;
  right: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
  bottom: 0;
  left: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-width: 5px 5px 5px 0;
  border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-width: 5px 0 5px 5px;
  border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
  top: 0;
  right: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
  top: 0;
  left: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1060;
  display: none;
  max-width: 276px;
  padding: 1px;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 13px;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
  margin-top: -10px;
}
.popover.right {
  margin-left: 10px;
}
.popover.bottom {
  margin-top: 10px;
}
.popover.left {
  margin-left: -10px;
}
.popover-title {
  margin: 0;
  padding: 8px 14px;
  font-size: 13px;
  background-color: #f7f7f7;
  border-bottom: 1px solid #ebebeb;
  border-radius: 2px 2px 0 0;
}
.popover-content {
  padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.popover > .arrow {
  border-width: 11px;
}
.popover > .arrow:after {
  border-width: 10px;
  content: "";
}
.popover.top > .arrow {
  left: 50%;
  margin-left: -11px;
  border-bottom-width: 0;
  border-top-color: #999999;
  border-top-color: rgba(0, 0, 0, 0.25);
  bottom: -11px;
}
.popover.top > .arrow:after {
  content: " ";
  bottom: 1px;
  margin-left: -10px;
  border-bottom-width: 0;
  border-top-color: #fff;
}
.popover.right > .arrow {
  top: 50%;
  left: -11px;
  margin-top: -11px;
  border-left-width: 0;
  border-right-color: #999999;
  border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right > .arrow:after {
  content: " ";
  left: 1px;
  bottom: -10px;
  border-left-width: 0;
  border-right-color: #fff;
}
.popover.bottom > .arrow {
  left: 50%;
  margin-left: -11px;
  border-top-width: 0;
  border-bottom-color: #999999;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  top: -11px;
}
.popover.bottom > .arrow:after {
  content: " ";
  top: 1px;
  margin-left: -10px;
  border-top-width: 0;
  border-bottom-color: #fff;
}
.popover.left > .arrow {
  top: 50%;
  right: -11px;
  margin-top: -11px;
  border-right-width: 0;
  border-left-color: #999999;
  border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left > .arrow:after {
  content: " ";
  right: 1px;
  border-right-width: 0;
  border-left-color: #fff;
  bottom: -10px;
}
.carousel {
  position: relative;
}
.carousel-inner {
  position: relative;
  overflow: hidden;
  width: 100%;
}
.carousel-inner > .item {
  display: none;
  position: relative;
  -webkit-transition: 0.6s ease-in-out left;
  -o-transition: 0.6s ease-in-out left;
  transition: 0.6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
  .carousel-inner > .item {
    -webkit-transition: -webkit-transform 0.6s ease-in-out;
    -moz-transition: -moz-transform 0.6s ease-in-out;
    -o-transition: -o-transform 0.6s ease-in-out;
    transition: transform 0.6s ease-in-out;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-perspective: 1000px;
    -moz-perspective: 1000px;
    perspective: 1000px;
  }
  .carousel-inner > .item.next,
  .carousel-inner > .item.active.right {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.prev,
  .carousel-inner > .item.active.left {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.next.left,
  .carousel-inner > .item.prev.right,
  .carousel-inner > .item.active {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    left: 0;
  }
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
  display: block;
}
.carousel-inner > .active {
  left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
  position: absolute;
  top: 0;
  width: 100%;
}
.carousel-inner > .next {
  left: 100%;
}
.carousel-inner > .prev {
  left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
  left: 0;
}
.carousel-inner > .active.left {
  left: -100%;
}
.carousel-inner > .active.right {
  left: 100%;
}
.carousel-control {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 15%;
  opacity: 0.5;
  filter: alpha(opacity=50);
  font-size: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
  left: auto;
  right: 0;
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
  outline: 0;
  color: #fff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
  position: absolute;
  top: 50%;
  margin-top: -10px;
  z-index: 5;
  display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
  left: 50%;
  margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
  right: 50%;
  margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
  width: 20px;
  height: 20px;
  line-height: 1;
  font-family: serif;
}
.carousel-control .icon-prev:before {
  content: '\2039';
}
.carousel-control .icon-next:before {
  content: '\203a';
}
.carousel-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  z-index: 15;
  width: 60%;
  margin-left: -30%;
  padding-left: 0;
  list-style: none;
  text-align: center;
}
.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  border: 1px solid #fff;
  border-radius: 10px;
  cursor: pointer;
  background-color: #000 \9;
  background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
  margin: 0;
  width: 12px;
  height: 12px;
  background-color: #fff;
}
.carousel-caption {
  position: absolute;
  left: 15%;
  right: 15%;
  bottom: 20px;
  z-index: 10;
  padding-top: 20px;
  padding-bottom: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
  text-shadow: none;
}
@media screen and (min-width: 768px) {
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-prev,
  .carousel-control .icon-next {
    width: 30px;
    height: 30px;
    margin-top: -10px;
    font-size: 30px;
  }
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .icon-prev {
    margin-left: -10px;
  }
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-next {
    margin-right: -10px;
  }
  .carousel-caption {
    left: 20%;
    right: 20%;
    padding-bottom: 30px;
  }
  .carousel-indicators {
    bottom: 20px;
  }
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after,
.item_buttons:before,
.item_buttons:after {
  content: " ";
  display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after,
.item_buttons:after {
  clear: both;
}
.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.pull-right {
  float: right !important;
}
.pull-left {
  float: left !important;
}
.hide {
  display: none !important;
}
.show {
  display: block !important;
}
.invisible {
  visibility: hidden;
}
.text-hide {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
.hidden {
  display: none !important;
}
.affix {
  position: fixed;
}
@-ms-viewport {
  width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
  display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
  display: none !important;
}
@media (max-width: 767px) {
  .visible-xs {
    display: block !important;
  }
  table.visible-xs {
    display: table !important;
  }
  tr.visible-xs {
    display: table-row !important;
  }
  th.visible-xs,
  td.visible-xs {
    display: table-cell !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-block {
    display: block !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline {
    display: inline !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm {
    display: block !important;
  }
  table.visible-sm {
    display: table !important;
  }
  tr.visible-sm {
    display: table-row !important;
  }
  th.visible-sm,
  td.visible-sm {
    display: table-cell !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-block {
    display: block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline {
    display: inline !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md {
    display: block !important;
  }
  table.visible-md {
    display: table !important;
  }
  tr.visible-md {
    display: table-row !important;
  }
  th.visible-md,
  td.visible-md {
    display: table-cell !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-block {
    display: block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline {
    display: inline !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg {
    display: block !important;
  }
  table.visible-lg {
    display: table !important;
  }
  tr.visible-lg {
    display: table-row !important;
  }
  th.visible-lg,
  td.visible-lg {
    display: table-cell !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-block {
    display: block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline {
    display: inline !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline-block {
    display: inline-block !important;
  }
}
@media (max-width: 767px) {
  .hidden-xs {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .hidden-sm {
    display: none !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .hidden-md {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .hidden-lg {
    display: none !important;
  }
}
.visible-print {
  display: none !important;
}
@media print {
  .visible-print {
    display: block !important;
  }
  table.visible-print {
    display: table !important;
  }
  tr.visible-print {
    display: table-row !important;
  }
  th.visible-print,
  td.visible-print {
    display: table-cell !important;
  }
}
.visible-print-block {
  display: none !important;
}
@media print {
  .visible-print-block {
    display: block !important;
  }
}
.visible-print-inline {
  display: none !important;
}
@media print {
  .visible-print-inline {
    display: inline !important;
  }
}
.visible-print-inline-block {
  display: none !important;
}
@media print {
  .visible-print-inline-block {
    display: inline-block !important;
  }
}
@media print {
  .hidden-print {
    display: none !important;
  }
}
/*!
*
* Font Awesome
*
*/
/*!
 *  Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eee;
  border-radius: .1em;
}
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #fff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
/*!
*
* IPython base
*
*/
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
code {
  color: #000;
}
pre {
  font-size: inherit;
  line-height: inherit;
}
label {
  font-weight: normal;
}
/* Make the page background atleast 100% the height of the view port */
/* Make the page itself atleast 70% the height of the view port */
.border-box-sizing {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.corner-all {
  border-radius: 2px;
}
.no-padding {
  padding: 0px;
}
/* Flexible box model classes */
/* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
/* This file is a compatability layer.  It allows the usage of flexible box 
model layouts accross multiple browsers, including older browsers.  The newest,
universal implementation of the flexible box model is used when available (see
`Modern browsers` comments below).  Browsers that are known to implement this 
new spec completely include:

    Firefox 28.0+
    Chrome 29.0+
    Internet Explorer 11+ 
    Opera 17.0+

Browsers not listed, including Safari, are supported via the styling under the
`Old browsers` comments below.
*/
.hbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
.hbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.vbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
.vbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.hbox.reverse,
.vbox.reverse,
.reverse {
  /* Old browsers */
  -webkit-box-direction: reverse;
  -moz-box-direction: reverse;
  box-direction: reverse;
  /* Modern browsers */
  flex-direction: row-reverse;
}
.hbox.box-flex0,
.vbox.box-flex0,
.box-flex0 {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
  width: auto;
}
.hbox.box-flex1,
.vbox.box-flex1,
.box-flex1 {
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex,
.vbox.box-flex,
.box-flex {
  /* Old browsers */
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex2,
.vbox.box-flex2,
.box-flex2 {
  /* Old browsers */
  -webkit-box-flex: 2;
  -moz-box-flex: 2;
  box-flex: 2;
  /* Modern browsers */
  flex: 2;
}
.box-group1 {
  /*  Deprecated */
  -webkit-box-flex-group: 1;
  -moz-box-flex-group: 1;
  box-flex-group: 1;
}
.box-group2 {
  /* Deprecated */
  -webkit-box-flex-group: 2;
  -moz-box-flex-group: 2;
  box-flex-group: 2;
}
.hbox.start,
.vbox.start,
.start {
  /* Old browsers */
  -webkit-box-pack: start;
  -moz-box-pack: start;
  box-pack: start;
  /* Modern browsers */
  justify-content: flex-start;
}
.hbox.end,
.vbox.end,
.end {
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
}
.hbox.center,
.vbox.center,
.center {
  /* Old browsers */
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  /* Modern browsers */
  justify-content: center;
}
.hbox.baseline,
.vbox.baseline,
.baseline {
  /* Old browsers */
  -webkit-box-pack: baseline;
  -moz-box-pack: baseline;
  box-pack: baseline;
  /* Modern browsers */
  justify-content: baseline;
}
.hbox.stretch,
.vbox.stretch,
.stretch {
  /* Old browsers */
  -webkit-box-pack: stretch;
  -moz-box-pack: stretch;
  box-pack: stretch;
  /* Modern browsers */
  justify-content: stretch;
}
.hbox.align-start,
.vbox.align-start,
.align-start {
  /* Old browsers */
  -webkit-box-align: start;
  -moz-box-align: start;
  box-align: start;
  /* Modern browsers */
  align-items: flex-start;
}
.hbox.align-end,
.vbox.align-end,
.align-end {
  /* Old browsers */
  -webkit-box-align: end;
  -moz-box-align: end;
  box-align: end;
  /* Modern browsers */
  align-items: flex-end;
}
.hbox.align-center,
.vbox.align-center,
.align-center {
  /* Old browsers */
  -webkit-box-align: center;
  -moz-box-align: center;
  box-align: center;
  /* Modern browsers */
  align-items: center;
}
.hbox.align-baseline,
.vbox.align-baseline,
.align-baseline {
  /* Old browsers */
  -webkit-box-align: baseline;
  -moz-box-align: baseline;
  box-align: baseline;
  /* Modern browsers */
  align-items: baseline;
}
.hbox.align-stretch,
.vbox.align-stretch,
.align-stretch {
  /* Old browsers */
  -webkit-box-align: stretch;
  -moz-box-align: stretch;
  box-align: stretch;
  /* Modern browsers */
  align-items: stretch;
}
div.error {
  margin: 2em;
  text-align: center;
}
div.error > h1 {
  font-size: 500%;
  line-height: normal;
}
div.error > p {
  font-size: 200%;
  line-height: normal;
}
div.traceback-wrapper {
  text-align: left;
  max-width: 800px;
  margin: auto;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
body {
  background-color: #fff;
  /* This makes sure that the body covers the entire window and needs to
       be in a different element than the display: box in wrapper below */
  position: absolute;
  left: 0px;
  right: 0px;
  top: 0px;
  bottom: 0px;
  overflow: visible;
}
body > #header {
  /* Initially hidden to prevent FLOUC */
  display: none;
  background-color: #fff;
  /* Display over codemirror */
  position: relative;
  z-index: 100;
}
body > #header #header-container {
  padding-bottom: 5px;
  padding-top: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
body > #header .header-bar {
  width: 100%;
  height: 1px;
  background: #e7e7e7;
  margin-bottom: -1px;
}
@media print {
  body > #header {
    display: none !important;
  }
}
#header-spacer {
  width: 100%;
  visibility: hidden;
}
@media print {
  #header-spacer {
    display: none;
  }
}
#ipython_notebook {
  padding-left: 0px;
  padding-top: 1px;
  padding-bottom: 1px;
}
@media (max-width: 991px) {
  #ipython_notebook {
    margin-left: 10px;
  }
}
[dir="rtl"] #ipython_notebook {
  float: right !important;
}
#noscript {
  width: auto;
  padding-top: 16px;
  padding-bottom: 16px;
  text-align: center;
  font-size: 22px;
  color: red;
  font-weight: bold;
}
#ipython_notebook img {
  height: 28px;
}
#site {
  width: 100%;
  display: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  overflow: auto;
}
@media print {
  #site {
    height: auto !important;
  }
}
/* Smaller buttons */
.ui-button .ui-button-text {
  padding: 0.2em 0.8em;
  font-size: 77%;
}
input.ui-button {
  padding: 0.3em 0.9em;
}
span#login_widget {
  float: right;
}
span#login_widget > .button,
#logout {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button:focus,
#logout:focus,
span#login_widget > .button.focus,
#logout.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
span#login_widget > .button:hover,
#logout:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active:hover,
#logout:active:hover,
span#login_widget > .button.active:hover,
#logout.active:hover,
.open > .dropdown-togglespan#login_widget > .button:hover,
.open > .dropdown-toggle#logout:hover,
span#login_widget > .button:active:focus,
#logout:active:focus,
span#login_widget > .button.active:focus,
#logout.active:focus,
.open > .dropdown-togglespan#login_widget > .button:focus,
.open > .dropdown-toggle#logout:focus,
span#login_widget > .button:active.focus,
#logout:active.focus,
span#login_widget > .button.active.focus,
#logout.active.focus,
.open > .dropdown-togglespan#login_widget > .button.focus,
.open > .dropdown-toggle#logout.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  background-image: none;
}
span#login_widget > .button.disabled:hover,
#logout.disabled:hover,
span#login_widget > .button[disabled]:hover,
#logout[disabled]:hover,
fieldset[disabled] span#login_widget > .button:hover,
fieldset[disabled] #logout:hover,
span#login_widget > .button.disabled:focus,
#logout.disabled:focus,
span#login_widget > .button[disabled]:focus,
#logout[disabled]:focus,
fieldset[disabled] span#login_widget > .button:focus,
fieldset[disabled] #logout:focus,
span#login_widget > .button.disabled.focus,
#logout.disabled.focus,
span#login_widget > .button[disabled].focus,
#logout[disabled].focus,
fieldset[disabled] span#login_widget > .button.focus,
fieldset[disabled] #logout.focus {
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button .badge,
#logout .badge {
  color: #fff;
  background-color: #333;
}
.nav-header {
  text-transform: none;
}
#header > span {
  margin-top: 10px;
}
.modal_stretch .modal-dialog {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 80vh;
}
.modal_stretch .modal-dialog .modal-body {
  max-height: calc(100vh - 200px);
  overflow: auto;
  flex: 1;
}
@media (min-width: 768px) {
  .modal .modal-dialog {
    width: 700px;
  }
}
@media (min-width: 768px) {
  select.form-control {
    margin-left: 12px;
    margin-right: 12px;
  }
}
/*!
*
* IPython auth
*
*/
.center-nav {
  display: inline-block;
  margin-bottom: -4px;
}
/*!
*
* IPython tree view
*
*/
/* We need an invisible input field on top of the sentense*/
/* "Drag file onto the list ..." */
.alternate_upload {
  background-color: none;
  display: inline;
}
.alternate_upload.form {
  padding: 0;
  margin: 0;
}
.alternate_upload input.fileinput {
  text-align: center;
  vertical-align: middle;
  display: inline;
  opacity: 0;
  z-index: 2;
  width: 12ex;
  margin-right: -12ex;
}
.alternate_upload .btn-upload {
  height: 22px;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
[dir="rtl"] #tabs li {
  float: right;
}
ul#tabs {
  margin-bottom: 4px;
}
[dir="rtl"] ul#tabs {
  margin-right: 0px;
}
ul#tabs a {
  padding-top: 6px;
  padding-bottom: 4px;
}
ul.breadcrumb a:focus,
ul.breadcrumb a:hover {
  text-decoration: none;
}
ul.breadcrumb i.icon-home {
  font-size: 16px;
  margin-right: 4px;
}
ul.breadcrumb span {
  color: #5e5e5e;
}
.list_toolbar {
  padding: 4px 0 4px 0;
  vertical-align: middle;
}
.list_toolbar .tree-buttons {
  padding-top: 1px;
}
[dir="rtl"] .list_toolbar .tree-buttons {
  float: left !important;
}
[dir="rtl"] .list_toolbar .pull-right {
  padding-top: 1px;
  float: left !important;
}
[dir="rtl"] .list_toolbar .pull-left {
  float: right !important;
}
.dynamic-buttons {
  padding-top: 3px;
  display: inline-block;
}
.list_toolbar [class*="span"] {
  min-height: 24px;
}
.list_header {
  font-weight: bold;
  background-color: #EEE;
}
.list_placeholder {
  font-weight: bold;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
}
.list_container {
  margin-top: 4px;
  margin-bottom: 20px;
  border: 1px solid #ddd;
  border-radius: 2px;
}
.list_container > div {
  border-bottom: 1px solid #ddd;
}
.list_container > div:hover .list-item {
  background-color: red;
}
.list_container > div:last-child {
  border: none;
}
.list_item:hover .list_item {
  background-color: #ddd;
}
.list_item a {
  text-decoration: none;
}
.list_item:hover {
  background-color: #fafafa;
}
.list_header > div,
.list_item > div {
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
.list_header > div input,
.list_item > div input {
  margin-right: 7px;
  margin-left: 14px;
  vertical-align: baseline;
  line-height: 22px;
  position: relative;
  top: -1px;
}
.list_header > div .item_link,
.list_item > div .item_link {
  margin-left: -1px;
  vertical-align: baseline;
  line-height: 22px;
}
.new-file input[type=checkbox] {
  visibility: hidden;
}
.item_name {
  line-height: 22px;
  height: 24px;
}
.item_icon {
  font-size: 14px;
  color: #5e5e5e;
  margin-right: 7px;
  margin-left: 7px;
  line-height: 22px;
  vertical-align: baseline;
}
.item_buttons {
  line-height: 1em;
  margin-left: -5px;
}
.item_buttons .btn,
.item_buttons .btn-group,
.item_buttons .input-group {
  float: left;
}
.item_buttons > .btn,
.item_buttons > .btn-group,
.item_buttons > .input-group {
  margin-left: 5px;
}
.item_buttons .btn {
  min-width: 13ex;
}
.item_buttons .running-indicator {
  padding-top: 4px;
  color: #5cb85c;
}
.item_buttons .kernel-name {
  padding-top: 4px;
  color: #5bc0de;
  margin-right: 7px;
  float: left;
}
.toolbar_info {
  height: 24px;
  line-height: 24px;
}
.list_item input:not([type=checkbox]) {
  padding-top: 3px;
  padding-bottom: 3px;
  height: 22px;
  line-height: 14px;
  margin: 0px;
}
.highlight_text {
  color: blue;
}
#project_name {
  display: inline-block;
  padding-left: 7px;
  margin-left: -2px;
}
#project_name > .breadcrumb {
  padding: 0px;
  margin-bottom: 0px;
  background-color: transparent;
  font-weight: bold;
}
#tree-selector {
  padding-right: 0px;
}
[dir="rtl"] #tree-selector a {
  float: right;
}
#button-select-all {
  min-width: 50px;
}
#select-all {
  margin-left: 7px;
  margin-right: 2px;
}
.menu_icon {
  margin-right: 2px;
}
.tab-content .row {
  margin-left: 0px;
  margin-right: 0px;
}
.folder_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f114";
}
.folder_icon:before.pull-left {
  margin-right: .3em;
}
.folder_icon:before.pull-right {
  margin-left: .3em;
}
.notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
}
.notebook_icon:before.pull-left {
  margin-right: .3em;
}
.notebook_icon:before.pull-right {
  margin-left: .3em;
}
.running_notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
  color: #5cb85c;
}
.running_notebook_icon:before.pull-left {
  margin-right: .3em;
}
.running_notebook_icon:before.pull-right {
  margin-left: .3em;
}
.file_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f016";
  position: relative;
  top: -2px;
}
.file_icon:before.pull-left {
  margin-right: .3em;
}
.file_icon:before.pull-right {
  margin-left: .3em;
}
#notebook_toolbar .pull-right {
  padding-top: 0px;
  margin-right: -1px;
}
ul#new-menu {
  left: auto;
  right: 0;
}
[dir="rtl"] #new-menu {
  text-align: right;
}
.kernel-menu-icon {
  padding-right: 12px;
  width: 24px;
  content: "\f096";
}
.kernel-menu-icon:before {
  content: "\f096";
}
.kernel-menu-icon-current:before {
  content: "\f00c";
}
#tab_content {
  padding-top: 20px;
}
#running .panel-group .panel {
  margin-top: 3px;
  margin-bottom: 1em;
}
#running .panel-group .panel .panel-heading {
  background-color: #EEE;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
  text-decoration: none;
}
#running .panel-group .panel .panel-body {
  padding: 0px;
}
#running .panel-group .panel .panel-body .list_container {
  margin-top: 0px;
  margin-bottom: 0px;
  border: 0px;
  border-radius: 0px;
}
#running .panel-group .panel .panel-body .list_container .list_item {
  border-bottom: 1px solid #ddd;
}
#running .panel-group .panel .panel-body .list_container .list_item:last-child {
  border-bottom: 0px;
}
[dir="rtl"] #running .col-sm-8 {
  float: right !important;
}
.delete-button {
  display: none;
}
.duplicate-button {
  display: none;
}
.rename-button {
  display: none;
}
.shutdown-button {
  display: none;
}
.dynamic-instructions {
  display: inline-block;
  padding-top: 4px;
}
/*!
*
* IPython text editor webapp
*
*/
.selected-keymap i.fa {
  padding: 0px 5px;
}
.selected-keymap i.fa:before {
  content: "\f00c";
}
#mode-menu {
  overflow: auto;
  max-height: 20em;
}
.edit_app #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.edit_app #menubar .navbar {
  /* Use a negative 1 bottom margin, so the border overlaps the border of the
    header */
  margin-bottom: -1px;
}
.dirty-indicator {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator.pull-left {
  margin-right: .3em;
}
.dirty-indicator.pull-right {
  margin-left: .3em;
}
.dirty-indicator-dirty {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-dirty.pull-left {
  margin-right: .3em;
}
.dirty-indicator-dirty.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-clean.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f00c";
}
.dirty-indicator-clean:before.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean:before.pull-right {
  margin-left: .3em;
}
#filename {
  font-size: 16pt;
  display: table;
  padding: 0px 5px;
}
#current-mode {
  padding-left: 5px;
  padding-right: 5px;
}
#texteditor-backdrop {
  padding-top: 20px;
  padding-bottom: 20px;
}
@media not print {
  #texteditor-backdrop {
    background-color: #EEE;
  }
}
@media print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container {
    padding: 0px;
    background-color: #fff;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI colors. */
.ansibold {
  font-weight: bold;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
  color: black;
}
.ansired {
  color: darkred;
}
.ansigreen {
  color: darkgreen;
}
.ansiyellow {
  color: #c4a000;
}
.ansiblue {
  color: darkblue;
}
.ansipurple {
  color: darkviolet;
}
.ansicyan {
  color: steelblue;
}
.ansigray {
  color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
  background-color: black;
}
.ansibgred {
  background-color: red;
}
.ansibggreen {
  background-color: green;
}
.ansibgyellow {
  background-color: yellow;
}
.ansibgblue {
  background-color: blue;
}
.ansibgpurple {
  background-color: magenta;
}
.ansibgcyan {
  background-color: cyan;
}
.ansibggray {
  background-color: gray;
}
div.cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-radius: 2px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  border-width: 1px;
  border-style: solid;
  border-color: transparent;
  width: 100%;
  padding: 5px;
  /* This acts as a spacer between cells, that is outside the border */
  margin: 0px;
  outline: none;
  border-left-width: 1px;
  padding-left: 5px;
  background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
}
div.cell.jupyter-soft-selected {
  border-left-color: #90CAF9;
  border-left-color: #E3F2FD;
  border-left-width: 1px;
  padding-left: 5px;
  border-right-color: #E3F2FD;
  border-right-width: 1px;
  background: #E3F2FD;
}
@media print {
  div.cell.jupyter-soft-selected {
    border-color: transparent;
  }
}
div.cell.selected {
  border-color: #ababab;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
}
@media print {
  div.cell.selected {
    border-color: transparent;
  }
}
div.cell.selected.jupyter-soft-selected {
  border-left-width: 0;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
}
.edit_mode div.cell.selected {
  border-color: #66BB6A;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
}
@media print {
  .edit_mode div.cell.selected {
    border-color: transparent;
  }
}
.prompt {
  /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
  min-width: 14ex;
  /* This padding is tuned to match the padding on the CodeMirror editor. */
  padding: 0.4em;
  margin: 0px;
  font-family: monospace;
  text-align: right;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
  /* Don't highlight prompt number selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  /* Use default cursor */
  cursor: default;
}
@media (max-width: 540px) {
  .prompt {
    text-align: left;
  }
}
div.inner_cell {
  min-width: 0;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
  border: 1px solid #cfcfcf;
  border-radius: 2px;
  background: #f7f7f7;
  line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
   is no content in the output_subarea and the prompt. The main purpose of this is
   to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
  padding-top: 0;
  padding-bottom: 0;
}
div.unrecognized_cell {
  padding: 5px 5px 5px 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.unrecognized_cell .inner_cell {
  border-radius: 2px;
  padding: 5px;
  font-weight: bold;
  color: red;
  border: 1px solid #cfcfcf;
  background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
  color: inherit;
  text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
  color: inherit;
  text-decoration: none;
}
@media (max-width: 540px) {
  div.unrecognized_cell > div.prompt {
    display: none;
  }
}
div.code_cell {
  /* avoid page breaking on code cells when printing */
}
@media print {
  div.code_cell {
    page-break-inside: avoid;
  }
}
/* any special styling for code cells that are currently running goes here */
div.input {
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.input {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
  color: #303F9F;
  border-top: 1px solid transparent;
}
div.input_area > div.highlight {
  margin: 0.4em;
  border: none;
  padding: 0px;
  background-color: transparent;
}
div.input_area > div.highlight > pre {
  margin: 0px;
  border: none;
  padding: 0px;
  background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
 * monospace font with inconsistent normal/bold/italic height.  See
 * notebookmain.js.  Such fonts will have keywords vertically offset with
 * respect to the rest of the text.  The user should select a better font.
 * See: https://github.com/ipython/ipython/issues/1503
 *
 * .CodeMirror span {
 *      vertical-align: bottom;
 * }
 */
.CodeMirror {
  line-height: 1.21429em;
  /* Changed from 1em to our global default */
  font-size: 14px;
  height: auto;
  /* Changed to auto to autogrow */
  background: none;
  /* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
  /*  The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
  /*  We have found that if it is visible, vertical scrollbars appear with font size changes.*/
  overflow-y: hidden;
  overflow-x: auto;
}
.CodeMirror-lines {
  /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
  /* we have set a different line-height and want this to scale with that. */
  padding: 0.4em;
}
.CodeMirror-linenumber {
  padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.CodeMirror pre {
  /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
  /* .CodeMirror-lines */
  padding: 0;
  border: 0;
  border-radius: 0;
}
/*

Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme

*/
.highlight-base {
  color: #000;
}
.highlight-variable {
  color: #000;
}
.highlight-variable-2 {
  color: #1a1a1a;
}
.highlight-variable-3 {
  color: #333333;
}
.highlight-string {
  color: #BA2121;
}
.highlight-comment {
  color: #408080;
  font-style: italic;
}
.highlight-number {
  color: #080;
}
.highlight-atom {
  color: #88F;
}
.highlight-keyword {
  color: #008000;
  font-weight: bold;
}
.highlight-builtin {
  color: #008000;
}
.highlight-error {
  color: #f00;
}
.highlight-operator {
  color: #AA22FF;
  font-weight: bold;
}
.highlight-meta {
  color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
  color: #00f;
}
.highlight-string-2 {
  color: #f50;
}
.highlight-qualifier {
  color: #555;
}
.highlight-bracket {
  color: #997;
}
.highlight-tag {
  color: #170;
}
.highlight-attribute {
  color: #00c;
}
.highlight-header {
  color: blue;
}
.highlight-quote {
  color: #090;
}
.highlight-link {
  color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
  color: #008000;
  font-weight: bold;
}
.cm-s-ipython span.cm-atom {
  color: #88F;
}
.cm-s-ipython span.cm-number {
  color: #080;
}
.cm-s-ipython span.cm-def {
  color: #00f;
}
.cm-s-ipython span.cm-variable {
  color: #000;
}
.cm-s-ipython span.cm-operator {
  color: #AA22FF;
  font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
  color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
  color: #333333;
}
.cm-s-ipython span.cm-comment {
  color: #408080;
  font-style: italic;
}
.cm-s-ipython span.cm-string {
  color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
  color: #f50;
}
.cm-s-ipython span.cm-meta {
  color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
  color: #555;
}
.cm-s-ipython span.cm-builtin {
  color: #008000;
}
.cm-s-ipython span.cm-bracket {
  color: #997;
}
.cm-s-ipython span.cm-tag {
  color: #170;
}
.cm-s-ipython span.cm-attribute {
  color: #00c;
}
.cm-s-ipython span.cm-header {
  color: blue;
}
.cm-s-ipython span.cm-quote {
  color: #090;
}
.cm-s-ipython span.cm-link {
  color: #00c;
}
.cm-s-ipython span.cm-error {
  color: #f00;
}
.cm-s-ipython span.cm-tab {
  background: url();
  background-position: right;
  background-repeat: no-repeat;
}
div.output_wrapper {
  /* this position must be relative to enable descendents to be absolute within it */
  position: relative;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
  /* ideally, this would be max-height, but FF barfs all over that */
  height: 24em;
  /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
  width: 100%;
  overflow: auto;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
  margin: 0px;
  padding: 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
div.out_prompt_overlay {
  height: 100%;
  padding: 0px 0.4em;
  position: absolute;
  border-radius: 2px;
}
div.out_prompt_overlay:hover {
  /* use inner shadow to get border that is computed the same on WebKit/FF */
  -webkit-box-shadow: inset 0 0 1px #000;
  box-shadow: inset 0 0 1px #000;
  background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
  color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
  padding: 0px;
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.output_area .MathJax_Display {
  text-align: left !important;
}
div.output_area .rendered_html table {
  margin-left: 0;
  margin-right: 0;
}
div.output_area .rendered_html img {
  margin-left: 0;
  margin-right: 0;
}
div.output_area img,
div.output_area svg {
  max-width: 100%;
  height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
  max-width: none;
}
/* This is needed to protect the pre formating from global settings such
   as that of bootstrap */
.output {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.output_area {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
div.output_area pre {
  margin: 0;
  padding: 0;
  border: 0;
  vertical-align: baseline;
  color: black;
  background-color: transparent;
  border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
   the prompt div. */
div.output_subarea {
  overflow-x: auto;
  padding: 0.4em;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
  max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
  overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
   output types */
/* all text output has this class: */
div.output_text {
  text-align: left;
  color: #000;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
  background: #fdd;
  /* very light red background for stderr */
}
div.output_latex {
  text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
  padding: 0;
}
.js-error {
  color: darkred;
}
/* raw_input styles */
div.raw_input_container {
  line-height: 1.21429em;
  padding-top: 5px;
}
pre.raw_input_prompt {
  /* nothing needed here. */
}
input.raw_input {
  font-family: monospace;
  font-size: inherit;
  color: inherit;
  width: auto;
  /* make sure input baseline aligns with prompt */
  vertical-align: baseline;
  /* padding + margin = 0.5em between prompt and cursor */
  padding: 0em 0.25em;
  margin: 0em 0.25em;
}
input.raw_input:focus {
  box-shadow: none;
}
p.p-space {
  margin-bottom: 10px;
}
div.output_unrecognized {
  padding: 5px;
  font-weight: bold;
  color: red;
}
div.output_unrecognized a {
  color: inherit;
  text-decoration: none;
}
div.output_unrecognized a:hover {
  color: inherit;
  text-decoration: none;
}
.rendered_html {
  color: #000;
  /* any extras will just be numbers: */
}
.rendered_html em {
  font-style: italic;
}
.rendered_html strong {
  font-weight: bold;
}
.rendered_html u {
  text-decoration: underline;
}
.rendered_html :link {
  text-decoration: underline;
}
.rendered_html :visited {
  text-decoration: underline;
}
.rendered_html h1 {
  font-size: 185.7%;
  margin: 1.08em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h2 {
  font-size: 157.1%;
  margin: 1.27em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h3 {
  font-size: 128.6%;
  margin: 1.55em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h4 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h5 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h6 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h1:first-child {
  margin-top: 0.538em;
}
.rendered_html h2:first-child {
  margin-top: 0.636em;
}
.rendered_html h3:first-child {
  margin-top: 0.777em;
}
.rendered_html h4:first-child {
  margin-top: 1em;
}
.rendered_html h5:first-child {
  margin-top: 1em;
}
.rendered_html h6:first-child {
  margin-top: 1em;
}
.rendered_html ul {
  list-style: disc;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ul ul {
  list-style: square;
  margin: 0em 2em;
}
.rendered_html ul ul ul {
  list-style: circle;
  margin: 0em 2em;
}
.rendered_html ol {
  list-style: decimal;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ol ol {
  list-style: upper-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol {
  list-style: lower-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol {
  list-style: lower-roman;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol ol {
  list-style: decimal;
  margin: 0em 2em;
}
.rendered_html * + ul {
  margin-top: 1em;
}
.rendered_html * + ol {
  margin-top: 1em;
}
.rendered_html hr {
  color: black;
  background-color: black;
}
.rendered_html pre {
  margin: 1em 2em;
}
.rendered_html pre,
.rendered_html code {
  border: 0;
  background-color: #fff;
  color: #000;
  font-size: 100%;
  padding: 0px;
}
.rendered_html blockquote {
  margin: 1em 2em;
}
.rendered_html table {
  margin-left: auto;
  margin-right: auto;
  border: 1px solid black;
  border-collapse: collapse;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
  border: 1px solid black;
  border-collapse: collapse;
  margin: 1em 2em;
}
.rendered_html td,
.rendered_html th {
  text-align: left;
  vertical-align: middle;
  padding: 4px;
}
.rendered_html th {
  font-weight: bold;
}
.rendered_html * + table {
  margin-top: 1em;
}
.rendered_html p {
  text-align: left;
}
.rendered_html * + p {
  margin-top: 1em;
}
.rendered_html img {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.rendered_html * + img {
  margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
  max-width: 100%;
  height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
  max-width: none;
}
div.text_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.text_cell > div.prompt {
    display: none;
  }
}
div.text_cell_render {
  /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
  outline: none;
  resize: none;
  width: inherit;
  border-style: none;
  padding: 0.5em 0.5em 0.5em 0.4em;
  color: #000;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
a.anchor-link:link {
  text-decoration: none;
  padding: 0px 20px;
  visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
  visibility: visible;
}
.text_cell.rendered .input_area {
  display: none;
}
.text_cell.rendered .rendered_html {
  overflow-x: auto;
  overflow-y: hidden;
}
.text_cell.unrendered .text_cell_render {
  display: none;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
  font-weight: bold;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
  font-size: 185.7%;
}
.cm-header-2 {
  font-size: 157.1%;
}
.cm-header-3 {
  font-size: 128.6%;
}
.cm-header-4 {
  font-size: 110%;
}
.cm-header-5 {
  font-size: 100%;
  font-style: italic;
}
.cm-header-6 {
  font-size: 100%;
  font-style: italic;
}
/*!
*
* IPython notebook webapp
*
*/
@media (max-width: 767px) {
  .notebook_app {
    padding-left: 0px;
    padding-right: 0px;
  }
}
#ipython-main-app {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook_panel {
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook {
  font-size: 14px;
  line-height: 20px;
  overflow-y: hidden;
  overflow-x: auto;
  width: 100%;
  /* This spaces the page away from the edge of the notebook area */
  padding-top: 20px;
  margin: 0px;
  outline: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  min-height: 100%;
}
@media not print {
  #notebook-container {
    padding: 15px;
    background-color: #fff;
    min-height: 0;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
@media print {
  #notebook-container {
    width: 100%;
  }
}
div.ui-widget-content {
  border: 1px solid #ababab;
  outline: none;
}
pre.dialog {
  background-color: #f7f7f7;
  border: 1px solid #ddd;
  border-radius: 2px;
  padding: 0.4em;
  padding-left: 2em;
}
p.dialog {
  padding: 0.2em;
}
/* Word-wrap output correctly.  This is the CSS3 spelling, though Firefox seems
   to not honor it correctly.  Webkit browsers (Chrome, rekonq, Safari) do.
 */
pre,
code,
kbd,
samp {
  white-space: pre-wrap;
}
#fonttest {
  font-family: monospace;
}
p {
  margin-bottom: 0;
}
.end_space {
  min-height: 100px;
  transition: height .2s ease;
}
.notebook_app > #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
@media not print {
  .notebook_app {
    background-color: #EEE;
  }
}
kbd {
  border-style: solid;
  border-width: 1px;
  box-shadow: none;
  margin: 2px;
  padding-left: 2px;
  padding-right: 2px;
  padding-top: 1px;
  padding-bottom: 1px;
}
/* CSS for the cell toolbar */
.celltoolbar {
  border: thin solid #CFCFCF;
  border-bottom: none;
  background: #EEE;
  border-radius: 2px 2px 0px 0px;
  width: 100%;
  height: 29px;
  padding-right: 4px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
  display: -webkit-flex;
}
@media print {
  .celltoolbar {
    display: none;
  }
}
.ctb_hideshow {
  display: none;
  vertical-align: bottom;
}
/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
   Cell toolbars are only shown when the ctb_global_show class is also set.
*/
.ctb_global_show .ctb_show.ctb_hideshow {
  display: block;
}
.ctb_global_show .ctb_show + .input_area,
.ctb_global_show .ctb_show + div.text_cell_input,
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border-top-right-radius: 0px;
  border-top-left-radius: 0px;
}
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border: 1px solid #cfcfcf;
}
.celltoolbar {
  font-size: 87%;
  padding-top: 3px;
}
.celltoolbar select {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
  width: inherit;
  font-size: inherit;
  height: 22px;
  padding: 0px;
  display: inline-block;
}
.celltoolbar select:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.celltoolbar select::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.celltoolbar select:-ms-input-placeholder {
  color: #999;
}
.celltoolbar select::-webkit-input-placeholder {
  color: #999;
}
.celltoolbar select::-ms-expand {
  border: 0;
  background-color: transparent;
}
.celltoolbar select[disabled],
.celltoolbar select[readonly],
fieldset[disabled] .celltoolbar select {
  background-color: #eeeeee;
  opacity: 1;
}
.celltoolbar select[disabled],
fieldset[disabled] .celltoolbar select {
  cursor: not-allowed;
}
textarea.celltoolbar select {
  height: auto;
}
select.celltoolbar select {
  height: 30px;
  line-height: 30px;
}
textarea.celltoolbar select,
select[multiple].celltoolbar select {
  height: auto;
}
.celltoolbar label {
  margin-left: 5px;
  margin-right: 5px;
}
.completions {
  position: absolute;
  z-index: 110;
  overflow: hidden;
  border: 1px solid #ababab;
  border-radius: 2px;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  line-height: 1;
}
.completions select {
  background: white;
  outline: none;
  border: none;
  padding: 0px;
  margin: 0px;
  overflow: auto;
  font-family: monospace;
  font-size: 110%;
  color: #000;
  width: auto;
}
.completions select option.context {
  color: #286090;
}
#kernel_logo_widget {
  float: right !important;
  float: right;
}
#kernel_logo_widget .current_kernel_logo {
  display: none;
  margin-top: -1px;
  margin-bottom: -1px;
  width: 32px;
  height: 32px;
}
#menubar {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  margin-top: 1px;
}
#menubar .navbar {
  border-top: 1px;
  border-radius: 0px 0px 2px 2px;
  margin-bottom: 0px;
}
#menubar .navbar-toggle {
  float: left;
  padding-top: 7px;
  padding-bottom: 7px;
  border: none;
}
#menubar .navbar-collapse {
  clear: left;
}
.nav-wrapper {
  border-bottom: 1px solid #e7e7e7;
}
i.menu-icon {
  padding-top: 4px;
}
ul#help_menu li a {
  overflow: hidden;
  padding-right: 2.2em;
}
ul#help_menu li a i {
  margin-right: -1.2em;
}
.dropdown-submenu {
  position: relative;
}
.dropdown-submenu > .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -6px;
  margin-left: -1px;
}
.dropdown-submenu:hover > .dropdown-menu {
  display: block;
}
.dropdown-submenu > a:after {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  display: block;
  content: "\f0da";
  float: right;
  color: #333333;
  margin-top: 2px;
  margin-right: -10px;
}
.dropdown-submenu > a:after.pull-left {
  margin-right: .3em;
}
.dropdown-submenu > a:after.pull-right {
  margin-left: .3em;
}
.dropdown-submenu:hover > a:after {
  color: #262626;
}
.dropdown-submenu.pull-left {
  float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
  left: -100%;
  margin-left: 10px;
}
#notification_area {
  float: right !important;
  float: right;
  z-index: 10;
}
.indicator_area {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#kernel_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  border-left: 1px solid;
}
#kernel_indicator .kernel_indicator_name {
  padding-left: 5px;
  padding-right: 5px;
}
#modal_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#readonly-indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  margin-top: 2px;
  margin-bottom: 0px;
  margin-left: 0px;
  margin-right: 0px;
  display: none;
}
.modal_indicator:before {
  width: 1.28571429em;
  text-align: center;
}
.edit_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f040";
}
.edit_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.edit_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.command_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: ' ';
}
.command_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.command_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.kernel_idle_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f10c";
}
.kernel_idle_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_idle_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_busy_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f111";
}
.kernel_busy_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_busy_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_dead_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f1e2";
}
.kernel_dead_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_dead_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_disconnected_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f127";
}
.kernel_disconnected_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_disconnected_icon:before.pull-right {
  margin-left: .3em;
}
.notification_widget {
  color: #777;
  z-index: 10;
  background: rgba(240, 240, 240, 0.5);
  margin-right: 4px;
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget:focus,
.notification_widget.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.notification_widget:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active:hover,
.notification_widget.active:hover,
.open > .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open > .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open > .dropdown-toggle.notification_widget.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  background-image: none;
}
.notification_widget.disabled:hover,
.notification_widget[disabled]:hover,
fieldset[disabled] .notification_widget:hover,
.notification_widget.disabled:focus,
.notification_widget[disabled]:focus,
fieldset[disabled] .notification_widget:focus,
.notification_widget.disabled.focus,
.notification_widget[disabled].focus,
fieldset[disabled] .notification_widget.focus {
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget .badge {
  color: #fff;
  background-color: #333;
}
.notification_widget.warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning:focus,
.notification_widget.warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.notification_widget.warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active:hover,
.notification_widget.warning.active:hover,
.open > .dropdown-toggle.notification_widget.warning:hover,
.notification_widget.warning:active:focus,
.notification_widget.warning.active:focus,
.open > .dropdown-toggle.notification_widget.warning:focus,
.notification_widget.warning:active.focus,
.notification_widget.warning.active.focus,
.open > .dropdown-toggle.notification_widget.warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  background-image: none;
}
.notification_widget.warning.disabled:hover,
.notification_widget.warning[disabled]:hover,
fieldset[disabled] .notification_widget.warning:hover,
.notification_widget.warning.disabled:focus,
.notification_widget.warning[disabled]:focus,
fieldset[disabled] .notification_widget.warning:focus,
.notification_widget.warning.disabled.focus,
.notification_widget.warning[disabled].focus,
fieldset[disabled] .notification_widget.warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.notification_widget.success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success:focus,
.notification_widget.success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.notification_widget.success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active:hover,
.notification_widget.success.active:hover,
.open > .dropdown-toggle.notification_widget.success:hover,
.notification_widget.success:active:focus,
.notification_widget.success.active:focus,
.open > .dropdown-toggle.notification_widget.success:focus,
.notification_widget.success:active.focus,
.notification_widget.success.active.focus,
.open > .dropdown-toggle.notification_widget.success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  background-image: none;
}
.notification_widget.success.disabled:hover,
.notification_widget.success[disabled]:hover,
fieldset[disabled] .notification_widget.success:hover,
.notification_widget.success.disabled:focus,
.notification_widget.success[disabled]:focus,
fieldset[disabled] .notification_widget.success:focus,
.notification_widget.success.disabled.focus,
.notification_widget.success[disabled].focus,
fieldset[disabled] .notification_widget.success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.notification_widget.info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info:focus,
.notification_widget.info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.notification_widget.info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active:hover,
.notification_widget.info.active:hover,
.open > .dropdown-toggle.notification_widget.info:hover,
.notification_widget.info:active:focus,
.notification_widget.info.active:focus,
.open > .dropdown-toggle.notification_widget.info:focus,
.notification_widget.info:active.focus,
.notification_widget.info.active.focus,
.open > .dropdown-toggle.notification_widget.info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  background-image: none;
}
.notification_widget.info.disabled:hover,
.notification_widget.info[disabled]:hover,
fieldset[disabled] .notification_widget.info:hover,
.notification_widget.info.disabled:focus,
.notification_widget.info[disabled]:focus,
fieldset[disabled] .notification_widget.info:focus,
.notification_widget.info.disabled.focus,
.notification_widget.info[disabled].focus,
fieldset[disabled] .notification_widget.info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.notification_widget.danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger:focus,
.notification_widget.danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.notification_widget.danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active:hover,
.notification_widget.danger.active:hover,
.open > .dropdown-toggle.notification_widget.danger:hover,
.notification_widget.danger:active:focus,
.notification_widget.danger.active:focus,
.open > .dropdown-toggle.notification_widget.danger:focus,
.notification_widget.danger:active.focus,
.notification_widget.danger.active.focus,
.open > .dropdown-toggle.notification_widget.danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  background-image: none;
}
.notification_widget.danger.disabled:hover,
.notification_widget.danger[disabled]:hover,
fieldset[disabled] .notification_widget.danger:hover,
.notification_widget.danger.disabled:focus,
.notification_widget.danger[disabled]:focus,
fieldset[disabled] .notification_widget.danger:focus,
.notification_widget.danger.disabled.focus,
.notification_widget.danger[disabled].focus,
fieldset[disabled] .notification_widget.danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger .badge {
  color: #d9534f;
  background-color: #fff;
}
div#pager {
  background-color: #fff;
  font-size: 14px;
  line-height: 20px;
  overflow: hidden;
  display: none;
  position: fixed;
  bottom: 0px;
  width: 100%;
  max-height: 50%;
  padding-top: 8px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  /* Display over codemirror */
  z-index: 100;
  /* Hack which prevents jquery ui resizable from changing top. */
  top: auto !important;
}
div#pager pre {
  line-height: 1.21429em;
  color: #000;
  background-color: #f7f7f7;
  padding: 0.4em;
}
div#pager #pager-button-area {
  position: absolute;
  top: 8px;
  right: 20px;
}
div#pager #pager-contents {
  position: relative;
  overflow: auto;
  width: 100%;
  height: 100%;
}
div#pager #pager-contents #pager-container {
  position: relative;
  padding: 15px 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
div#pager .ui-resizable-handle {
  top: 0px;
  height: 8px;
  background: #f7f7f7;
  border-top: 1px solid #cfcfcf;
  border-bottom: 1px solid #cfcfcf;
  /* This injects handle bars (a short, wide = symbol) for 
        the resize handle. */
}
div#pager .ui-resizable-handle::after {
  content: '';
  top: 2px;
  left: 50%;
  height: 3px;
  width: 30px;
  margin-left: -15px;
  position: absolute;
  border-top: 1px solid #cfcfcf;
}
.quickhelp {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  line-height: 1.8em;
}
.shortcut_key {
  display: inline-block;
  width: 21ex;
  text-align: right;
  font-family: monospace;
}
.shortcut_descr {
  display: inline-block;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
span.save_widget {
  margin-top: 6px;
}
span.save_widget span.filename {
  height: 1em;
  line-height: 1em;
  padding: 3px;
  margin-left: 16px;
  border: none;
  font-size: 146.5%;
  border-radius: 2px;
}
span.save_widget span.filename:hover {
  background-color: #e6e6e6;
}
span.checkpoint_status,
span.autosave_status {
  font-size: small;
}
@media (max-width: 767px) {
  span.save_widget {
    font-size: small;
  }
  span.checkpoint_status,
  span.autosave_status {
    display: none;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  span.checkpoint_status {
    display: none;
  }
  span.autosave_status {
    font-size: x-small;
  }
}
.toolbar {
  padding: 0px;
  margin-left: -5px;
  margin-top: 2px;
  margin-bottom: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.toolbar select,
.toolbar label {
  width: auto;
  vertical-align: middle;
  margin-right: 2px;
  margin-bottom: 0px;
  display: inline;
  font-size: 92%;
  margin-left: 0.3em;
  margin-right: 0.3em;
  padding: 0px;
  padding-top: 3px;
}
.toolbar .btn {
  padding: 2px 8px;
}
.toolbar .btn-group {
  margin-top: 0px;
  margin-left: 5px;
}
#maintoolbar {
  margin-bottom: -3px;
  margin-top: -8px;
  border: 0px;
  min-height: 27px;
  margin-left: 0px;
  padding-top: 11px;
  padding-bottom: 3px;
}
#maintoolbar .navbar-text {
  float: none;
  vertical-align: middle;
  text-align: right;
  margin-left: 5px;
  margin-right: 0px;
  margin-top: 0px;
}
.select-xs {
  height: 24px;
}
.pulse,
.dropdown-menu > li > a.pulse,
li.pulse > a.dropdown-toggle,
li.pulse.open > a.dropdown-toggle {
  background-color: #F37626;
  color: white;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
 * of chance of beeing generated from the ../less/[samename].less file, you can
 * try to get back the less file by reverting somme commit in history
 **/
/*
 * We'll try to get something pretty, so we
 * have some strange css to have the scroll bar on
 * the left with fix button on the top right of the tooltip
 */
@-moz-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-moz-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/*properties of tooltip after "expand"*/
.bigtooltip {
  overflow: auto;
  height: 200px;
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
}
/*properties of tooltip before "expand"*/
.smalltooltip {
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
  text-overflow: ellipsis;
  overflow: hidden;
  height: 80px;
}
.tooltipbuttons {
  position: absolute;
  padding-right: 15px;
  top: 0px;
  right: 0px;
}
.tooltiptext {
  /*avoid the button to overlap on some docstring*/
  padding-right: 30px;
}
.ipython_tooltip {
  max-width: 700px;
  /*fade-in animation when inserted*/
  -webkit-animation: fadeOut 400ms;
  -moz-animation: fadeOut 400ms;
  animation: fadeOut 400ms;
  -webkit-animation: fadeIn 400ms;
  -moz-animation: fadeIn 400ms;
  animation: fadeIn 400ms;
  vertical-align: middle;
  background-color: #f7f7f7;
  overflow: visible;
  border: #ababab 1px solid;
  outline: none;
  padding: 3px;
  margin: 0px;
  padding-left: 7px;
  font-family: monospace;
  min-height: 50px;
  -moz-box-shadow: 0px 6px 10px -1px #adadad;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  border-radius: 2px;
  position: absolute;
  z-index: 1000;
}
.ipython_tooltip a {
  float: right;
}
.ipython_tooltip .tooltiptext pre {
  border: 0;
  border-radius: 0;
  font-size: 100%;
  background-color: #f7f7f7;
}
.pretooltiparrow {
  left: 0px;
  margin: 0px;
  top: -16px;
  width: 40px;
  height: 16px;
  overflow: hidden;
  position: absolute;
}
.pretooltiparrow:before {
  background-color: #f7f7f7;
  border: 1px #ababab solid;
  z-index: 11;
  content: "";
  position: absolute;
  left: 15px;
  top: 10px;
  width: 25px;
  height: 25px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
}
ul.typeahead-list i {
  margin-left: -10px;
  width: 18px;
}
ul.typeahead-list {
  max-height: 80vh;
  overflow: auto;
}
ul.typeahead-list > li > a {
  /** Firefox bug **/
  /* see https://github.com/jupyter/notebook/issues/559 */
  white-space: normal;
}
.cmd-palette .modal-body {
  padding: 7px;
}
.cmd-palette form {
  background: white;
}
.cmd-palette input {
  outline: none;
}
.no-shortcut {
  display: none;
}
.command-shortcut:before {
  content: "(command)";
  padding-right: 3px;
  color: #777777;
}
.edit-shortcut:before {
  content: "(edit)";
  padding-right: 3px;
  color: #777777;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
  background-color: #BBDEFB;
  border-color: #90CAF9;
  border-style: solid;
  border-width: 1px;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .match {
  background-color: #FFCDD2;
  border-color: #EF9A9A;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
  background-color: #C8E6C9;
  border-color: #A5D6A7;
  border-radius: 0px;
}
#find-and-replace #replace-preview {
  max-height: 60vh;
  overflow: auto;
}
#find-and-replace #replace-preview pre {
  padding: 5px 10px;
}
.terminal-app {
  background: #EEE;
}
.terminal-app #header {
  background: #fff;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.terminal-app .terminal {
  width: 100%;
  float: left;
  font-family: monospace;
  color: white;
  background: black;
  padding: 0.4em;
  border-radius: 2px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
}
.terminal-app .terminal,
.terminal-app .terminal dummy-screen {
  line-height: 1em;
  font-size: 14px;
}
.terminal-app .terminal .xterm-rows {
  padding: 10px;
}
.terminal-app .terminal-cursor {
  color: black;
  background: white;
}
.terminal-app #terminado-container {
  margin-top: 20px;
}
/*# sourceMappingURL=style.min.css.map */
    </style>
<style type="text/css">
    .highlight .hll { background-color: #ffffcc }
.highlight  { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
    </style>
<style type="text/css">
    
/* Temporary definitions which will become obsolete with Notebook release 5.0 */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }

.ansi-bold { font-weight: bold; }

    </style>


<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
  overflow: visible;
  padding: 8px;
}

div#notebook {
  overflow: visible;
  border-top: none;
}@media print {
  div.cell {
    display: block;
    page-break-inside: avoid;
  } 
  div.output_wrapper { 
    display: block;
    page-break-inside: avoid; 
  }
  div.output { 
    display: block;
    page-break-inside: avoid; 
  }
}
</style>

<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">

<!-- Loading mathjax macro -->
<!-- Load mathjax -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML"></script>
    <!-- MathJax configuration -->
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ['$','$'], ["\\(","\\)"] ],
            displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
            processEscapes: true,
            processEnvironments: true
        },
        // Center justify equations in code and markdown cells. Elsewhere
        // we use CSS to left justify single line equations in code cells.
        displayAlign: 'center',
        "HTML-CSS": {
            styles: {'.MathJax_Display': {"margin": 0}},
            linebreaks: { automatic: true }
        }
    });
    </script>
    <!-- End of mathjax configuration --></head>
<body>
  <div tabindex="-1" id="notebook" class="border-box-sizing">
    <div class="container" id="notebook-container">

<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#22270;&#20687;&#20998;&#31867;">&#22270;&#20687;&#20998;&#31867;<a class="anchor-link" href="#&#22270;&#20687;&#20998;&#31867;">&#182;</a></h1><p>在此项目中，你将对 <a href="https://www.cs.toronto.edu/~kriz/cifar.html">CIFAR-10 数据集</a> 中的图片进行分类。该数据集包含飞机、猫狗和其他物体。你需要预处理这些图片，然后用所有样本训练一个卷积神经网络。图片需要标准化（normalized），标签需要采用 one-hot 编码。你需要应用所学的知识构建卷积的、最大池化（max pooling）、丢弃（dropout）和完全连接（fully connected）的层。最后，你需要在样本图片上看到神经网络的预测结果。</p>
<h2 id="&#33719;&#21462;&#25968;&#25454;">&#33719;&#21462;&#25968;&#25454;<a class="anchor-link" href="#&#33719;&#21462;&#25968;&#25454;">&#182;</a></h2><p>请运行以下单元，以下载 <a href="https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz">CIFAR-10 数据集（Python版）</a>。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[58]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">urllib.request</span> <span class="k">import</span> <span class="n">urlretrieve</span>
<span class="kn">from</span> <span class="nn">os.path</span> <span class="k">import</span> <span class="n">isfile</span><span class="p">,</span> <span class="n">isdir</span>
<span class="kn">from</span> <span class="nn">tqdm</span> <span class="k">import</span> <span class="n">tqdm</span>
<span class="kn">import</span> <span class="nn">problem_unittests</span> <span class="k">as</span> <span class="nn">tests</span>
<span class="kn">import</span> <span class="nn">tarfile</span>

<span class="n">cifar10_dataset_folder_path</span> <span class="o">=</span> <span class="s1">&#39;cifar-10-batches-py&#39;</span>

<span class="c1"># Use Floyd&#39;s cifar-10 dataset if present</span>
<span class="n">floyd_cifar10_location</span> <span class="o">=</span> <span class="s1">&#39;/input/cifar-10/python.tar.gz&#39;</span>
<span class="k">if</span> <span class="n">isfile</span><span class="p">(</span><span class="n">floyd_cifar10_location</span><span class="p">):</span>
    <span class="n">tar_gz_path</span> <span class="o">=</span> <span class="n">floyd_cifar10_location</span>
<span class="k">else</span><span class="p">:</span>
    <span class="n">tar_gz_path</span> <span class="o">=</span> <span class="s1">&#39;cifar-10-python.tar.gz&#39;</span>

<span class="k">class</span> <span class="nc">DLProgress</span><span class="p">(</span><span class="n">tqdm</span><span class="p">):</span>
    <span class="n">last_block</span> <span class="o">=</span> <span class="mi">0</span>

    <span class="k">def</span> <span class="nf">hook</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">block_num</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">block_size</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">total_size</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">total</span> <span class="o">=</span> <span class="n">total_size</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">((</span><span class="n">block_num</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_block</span><span class="p">)</span> <span class="o">*</span> <span class="n">block_size</span><span class="p">)</span>
        <span class="bp">self</span><span class="o">.</span><span class="n">last_block</span> <span class="o">=</span> <span class="n">block_num</span>

<span class="k">if</span> <span class="ow">not</span> <span class="n">isfile</span><span class="p">(</span><span class="n">tar_gz_path</span><span class="p">):</span>
    <span class="k">with</span> <span class="n">DLProgress</span><span class="p">(</span><span class="n">unit</span><span class="o">=</span><span class="s1">&#39;B&#39;</span><span class="p">,</span> <span class="n">unit_scale</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">miniters</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="s1">&#39;CIFAR-10 Dataset&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">pbar</span><span class="p">:</span>
        <span class="n">urlretrieve</span><span class="p">(</span>
            <span class="s1">&#39;https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz&#39;</span><span class="p">,</span>
            <span class="n">tar_gz_path</span><span class="p">,</span>
            <span class="n">pbar</span><span class="o">.</span><span class="n">hook</span><span class="p">)</span>

<span class="k">if</span> <span class="ow">not</span> <span class="n">isdir</span><span class="p">(</span><span class="n">cifar10_dataset_folder_path</span><span class="p">):</span>
    <span class="k">with</span> <span class="n">tarfile</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">tar_gz_path</span><span class="p">)</span> <span class="k">as</span> <span class="n">tar</span><span class="p">:</span>
        <span class="n">tar</span><span class="o">.</span><span class="n">extractall</span><span class="p">()</span>
        <span class="n">tar</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>


<span class="n">tests</span><span class="o">.</span><span class="n">test_folder_path</span><span class="p">(</span><span class="n">cifar10_dataset_folder_path</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>All files found!
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#25506;&#32034;&#25968;&#25454;">&#25506;&#32034;&#25968;&#25454;<a class="anchor-link" href="#&#25506;&#32034;&#25968;&#25454;">&#182;</a></h2><p>该数据集分成了几部分／批次（batches），以免你的机器在计算时内存不足。CIFAR-10 数据集包含 5 个部分，名称分别为 <code>data_batch_1</code>、<code>data_batch_2</code>，以此类推。每个部分都包含以下某个类别的标签和图片：</p>
<ul>
<li>飞机</li>
<li>汽车</li>
<li>鸟类</li>
<li>猫</li>
<li>鹿</li>
<li>狗</li>
<li>青蛙</li>
<li>马</li>
<li>船只</li>
<li>卡车</li>
</ul>
<p>了解数据集也是对数据进行预测的必经步骤。你可以通过更改 <code>batch_id</code> 和 <code>sample_id</code> 探索下面的代码单元。<code>batch_id</code> 是数据集一个部分的 ID（1 到 5）。<code>sample_id</code> 是该部分中图片和标签对（label pair）的 ID。</p>
<p>问问你自己：“可能的标签有哪些？”、“图片数据的值范围是多少？”、“标签是按顺序排列，还是随机排列的？”。思考类似的问题，有助于你预处理数据，并使预测结果更准确。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[59]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="o">%</span><span class="k">matplotlib</span> inline
<span class="o">%</span><span class="k">config</span> InlineBackend.figure_format = &#39;retina&#39;

<span class="kn">import</span> <span class="nn">helper</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>

<span class="c1"># Explore the dataset</span>
<span class="n">batch_id</span> <span class="o">=</span> <span class="mi">1</span>
<span class="n">sample_id</span> <span class="o">=</span> <span class="mi">6</span>
<span class="n">helper</span><span class="o">.</span><span class="n">display_stats</span><span class="p">(</span><span class="n">cifar10_dataset_folder_path</span><span class="p">,</span> <span class="n">batch_id</span><span class="p">,</span> <span class="n">sample_id</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>
Stats of batch 1:
Samples: 10000
Label Counts: {0: 1005, 1: 974, 2: 1032, 3: 1016, 4: 999, 5: 937, 6: 1030, 7: 1001, 8: 1025, 9: 981}
First 20 Labels: [6, 9, 9, 4, 1, 1, 2, 7, 8, 3, 4, 7, 7, 2, 9, 9, 9, 3, 2, 6]

Example of Image 6:
Image - Min Value: 7 Max Value: 249
Image - Shape: (32, 32, 3)
Label - Label Id: 2 Name: bird
</pre>
</div>
</div>

<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
oJ1dn6RuvR79NpXbvBf//rU6z62mja83w5ne/EHq1rJ1UrlXx/8Yzgz7W6lb+/s/Cme60/hrmOWb
OQAUp8wBoDhlDgDFKXMAKE6ZA0BxyhwAilPmAFCcMgeA4pQ5ABSnzAGgOGUOAMUpcwAo7kYNrXzy
6Kep3Hx9GM/0+6lb93dvhzOrO9upW51Fbrzg7dsn4czxZW5YpLf6nXDm+no3dWs0zY3jrK6dhjOT
Se7W6PIqnLm8vEzdms/niUzufd7eyo1brG3Gx3Gevz1O3bruxYdWXl6+Td3aPMqNQvX24q/H9OzP
qVvr3fgo1N7aB6lbK4PcZ9VsHP8ZN4a54apH9z4KZ/rtYepWhm/mAFCcMgeA4pQ5ABSnzAGgOGUO
AMUpcwAoTpkDQHHKHACKU+YAUJwyB4DilDkAFKfMAaA4ZQ4Axd2o1bQf/fjnqVx3J77o1N3cSN3a
XY0vM/WG8VW31lrrtdyy2+8+/1U4c/TkderW16/iK2H9ldwi2dpmL5UbTM/DmeU0vubUWmuXp6Nw
ZrYcp24NBvHn4+oi/lq01tpXf/5TKre5Gn8d54vcx9rFdBLOvD0/St36cPpBKnf8fBrOPPnzH1K3
+pP438vuZu5z4MEHO6nc6Sy+kLfYjX8Gt9bafj++kLc5zK0FZvhmDgDFKXMAKE6ZA0BxyhwAilPm
AFCcMgeA4pQ5ABSnzAGgOGUOAMUpcwAoTpkDQHHKHACKU+YAUNyNWk37zo9+lsot+6vhzHwlvl7U
WmsrvctwpjeP/3yttdZZy62EXf12Hs48f5pbjzq+jue2NjdTt2avcu/Z+jB+787+ndStW9vx9aiL
q/gz1Vprk0l8fW56HV8Wa621i3dnqdz1YhbOdBfJn/H6aTyT+Plaa+1skVuf63SX4Uy/czd16/df
xpfudm7nfq+Tldy6WH8j/jd9kVhBbK21o5OLcObx3b9M3frp3f8QzvhmDgDFKXMAKE6ZA0BxyhwA
ilPmAFCcMgeA4pQ5ABSnzAGgOGUOAMUpcwAoTpkDQHHKHACKu1FDK+s78ZGK1lqbLeL/ppl3Uqda
68eHGRbLq9Sp1c3c0Mr08m048/qPv0/dWm5uhDMH9z5N3fry8xep3KizFs50LsepWysP40ManRbP
tNbayyd/Dmcur3KDKVdX8ZGK1lrrzeOjP51lbnimrb4LR5b9furU01fxUZfWWtvbif+9vPf+o9St
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
"
width=249
height=248
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#23454;&#29616;&#39044;&#22788;&#29702;&#20989;&#25968;">&#23454;&#29616;&#39044;&#22788;&#29702;&#20989;&#25968;<a class="anchor-link" href="#&#23454;&#29616;&#39044;&#22788;&#29702;&#20989;&#25968;">&#182;</a></h2><h3 id="&#26631;&#20934;&#21270;">&#26631;&#20934;&#21270;<a class="anchor-link" href="#&#26631;&#20934;&#21270;">&#182;</a></h3><p>在下面的单元中，实现 <code>normalize</code> 函数，传入图片数据 <code>x</code>，并返回标准化 Numpy 数组。值应该在 0 到 1 的范围内（含 0 和 1）。返回对象应该和 <code>x</code> 的形状一样。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[60]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Normalize a list of sample image data in the range of 0 to 1</span>
<span class="sd">    : x: List of image data.  The image shape is (32, 32, 3)</span>
<span class="sd">    : return: Numpy array of normalize data</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="k">return</span> <span class="n">x</span> <span class="o">/</span> <span class="mf">255.0</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_normalize</span><span class="p">(</span><span class="n">normalize</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="One-hot-&#32534;&#30721;">One-hot &#32534;&#30721;<a class="anchor-link" href="#One-hot-&#32534;&#30721;">&#182;</a></h3><p>和之前的代码单元一样，你将为预处理实现一个函数。这次，你将实现 <code>one_hot_encode</code> 函数。输入，也就是 <code>x</code>，是一个标签列表。实现该函数，以返回为 one_hot 编码的 Numpy 数组的标签列表。标签的可能值为 0 到 9。每次调用 <code>one_hot_encode</code> 时，对于每个值，one_hot 编码函数应该返回相同的编码。确保将编码映射保存到该函数外面。</p>
<p>提示：不要重复发明轮子。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[61]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">label_binarize</span>
<span class="c1"># http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.label_binarize.html#sklearn.preprocessing.label_binarize</span>
<span class="n">label_one_hot_classes</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">one_hot_encode</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    One hot encode a list of sample labels. Return a one-hot encoded vector for each label.</span>
<span class="sd">    : x: List of sample Labels</span>
<span class="sd">    : return: Numpy array of one-hot encoded labels</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="c1"># print(label_binarize(x, classes = label_one_hot_classes))</span>
    <span class="k">return</span> <span class="n">label_binarize</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">classes</span> <span class="o">=</span> <span class="n">label_one_hot_classes</span><span class="p">)</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_one_hot_encode</span><span class="p">(</span><span class="n">one_hot_encode</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#38543;&#26426;&#21270;&#25968;&#25454;">&#38543;&#26426;&#21270;&#25968;&#25454;<a class="anchor-link" href="#&#38543;&#26426;&#21270;&#25968;&#25454;">&#182;</a></h3><p>之前探索数据时，你已经了解到，样本的顺序是随机的。再随机化一次也不会有什么关系，但是对于这个数据集没有必要。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#39044;&#22788;&#29702;&#25152;&#26377;&#25968;&#25454;&#24182;&#20445;&#23384;">&#39044;&#22788;&#29702;&#25152;&#26377;&#25968;&#25454;&#24182;&#20445;&#23384;<a class="anchor-link" href="#&#39044;&#22788;&#29702;&#25152;&#26377;&#25968;&#25454;&#24182;&#20445;&#23384;">&#182;</a></h2><p>运行下方的代码单元，将预处理所有 CIFAR-10 数据，并保存到文件中。下面的代码还使用了 10% 的训练数据，用来验证。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="c1"># Preprocess Training, Validation, and Testing Data</span>
<span class="n">helper</span><span class="o">.</span><span class="n">preprocess_and_save_data</span><span class="p">(</span><span class="n">cifar10_dataset_folder_path</span><span class="p">,</span> <span class="n">normalize</span><span class="p">,</span> <span class="n">one_hot_encode</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#26816;&#26597;&#28857;">&#26816;&#26597;&#28857;<a class="anchor-link" href="#&#26816;&#26597;&#28857;">&#182;</a></h1><p>这是你的第一个检查点。如果你什么时候决定再回到该记事本，或需要重新启动该记事本，你可以从这里开始。预处理的数据已保存到本地。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span> <span class="nn">pickle</span>
<span class="kn">import</span> <span class="nn">problem_unittests</span> <span class="k">as</span> <span class="nn">tests</span>
<span class="kn">import</span> <span class="nn">helper</span>

<span class="c1"># Load the Preprocessed Validation data</span>
<span class="n">valid_features</span><span class="p">,</span> <span class="n">valid_labels</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="s1">&#39;preprocess_validation.p&#39;</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">&#39;rb&#39;</span><span class="p">))</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#26500;&#24314;&#32593;&#32476;">&#26500;&#24314;&#32593;&#32476;<a class="anchor-link" href="#&#26500;&#24314;&#32593;&#32476;">&#182;</a></h2><p>对于该神经网络，你需要将每层都构建为一个函数。你看到的大部分代码都位于函数外面。要更全面地测试你的代码，我们需要你将每层放入一个函数中。这样使我们能够提供更好的反馈，并使用我们的统一测试检测简单的错误，然后再提交项目。</p>
<blockquote><p><strong>注意</strong>：如果你觉得每周很难抽出足够的时间学习这门课程，我们为此项目提供了一个小捷径。对于接下来的几个问题，你可以使用 <a href="https://www.tensorflow.org/api_docs/python/tf/layers">TensorFlow Layers</a> 或 <a href="https://www.tensorflow.org/api_guides/python/contrib.layers">TensorFlow Layers (contrib)</a> 程序包中的类来构建每个层级，但是“卷积和最大池化层级”部分的层级除外。TF Layers 和 Keras 及 TFLearn 层级类似，因此很容易学会。</p>
<p>但是，如果你想充分利用这门课程，请尝试自己解决所有问题，不使用 TF Layers 程序包中的任何类。你依然可以使用其他程序包中的类，这些类和你在 TF Layers 中的类名称是一样的！例如，你可以使用 TF Neural Network 版本的 <code>conv2d</code> 类 <a href="https://www.tensorflow.org/api_docs/python/tf/nn/conv2d">tf.nn.conv2d</a>，而不是 TF Layers 版本的 <code>conv2d</code> 类 <a href="https://www.tensorflow.org/api_docs/python/tf/layers/conv2d">tf.layers.conv2d</a>。</p>
</blockquote>
<p>我们开始吧！</p>
<h3 id="&#36755;&#20837;">&#36755;&#20837;<a class="anchor-link" href="#&#36755;&#20837;">&#182;</a></h3><p>神经网络需要读取图片数据、one-hot 编码标签和丢弃保留概率（dropout keep probability）。请实现以下函数：</p>
<ul>
<li>实现 <code>neural_net_image_input</code><ul>
<li>返回 <a href="https://www.tensorflow.org/api_docs/python/tf/placeholder">TF Placeholder</a></li>
<li>使用 <code>image_shape</code> 设置形状，部分大小设为 <code>None</code></li>
<li>使用 <a href="https://www.tensorflow.org/api_docs/python/tf/placeholder">TF Placeholder</a> 中的 TensorFlow <code>name</code> 参数对 TensorFlow 占位符 "x" 命名</li>
</ul>
</li>
<li>实现 <code>neural_net_label_input</code><ul>
<li>返回 <a href="https://www.tensorflow.org/api_docs/python/tf/placeholder">TF Placeholder</a></li>
<li>使用 <code>n_classes</code> 设置形状，部分大小设为 <code>None</code></li>
<li>使用 <a href="https://www.tensorflow.org/api_docs/python/tf/placeholder">TF Placeholder</a> 中的 TensorFlow <code>name</code> 参数对 TensorFlow 占位符 "y" 命名</li>
</ul>
</li>
<li>实现 <code>neural_net_keep_prob_input</code><ul>
<li>返回 <a href="https://www.tensorflow.org/api_docs/python/tf/placeholder">TF Placeholder</a>，用于丢弃保留概率</li>
<li>使用 <a href="https://www.tensorflow.org/api_docs/python/tf/placeholder">TF Placeholder</a> 中的 TensorFlow <code>name</code> 参数对 TensorFlow 占位符 "keep_prob" 命名</li>
</ul>
</li>
</ul>
<p>这些名称将在项目结束时，用于加载保存的模型。</p>
<p>注意：TensorFlow 中的 <code>None</code> 表示形状可以是动态大小。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[64]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">tensorflow</span> <span class="k">as</span> <span class="nn">tf</span>

<span class="k">def</span> <span class="nf">neural_net_image_input</span><span class="p">(</span><span class="n">image_shape</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Return a Tensor for a batch of image input</span>
<span class="sd">    : image_shape: Shape of the images</span>
<span class="sd">    : return: Tensor for image input.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>

    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">shape</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="o">*</span><span class="n">image_shape</span><span class="p">],</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;x&quot;</span><span class="p">)</span>


<span class="k">def</span> <span class="nf">neural_net_label_input</span><span class="p">(</span><span class="n">n_classes</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Return a Tensor for a batch of label input</span>
<span class="sd">    : n_classes: Number of classes</span>
<span class="sd">    : return: Tensor for label input.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">shape</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="n">n_classes</span><span class="p">],</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;y&quot;</span><span class="p">)</span>


<span class="k">def</span> <span class="nf">neural_net_keep_prob_input</span><span class="p">():</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Return a Tensor for keep probability</span>
<span class="sd">    : return: Tensor for keep probability.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">shape</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;keep_prob&quot;</span><span class="p">)</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tf</span><span class="o">.</span><span class="n">reset_default_graph</span><span class="p">()</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_nn_image_inputs</span><span class="p">(</span><span class="n">neural_net_image_input</span><span class="p">)</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_nn_label_inputs</span><span class="p">(</span><span class="n">neural_net_label_input</span><span class="p">)</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_nn_keep_prob_inputs</span><span class="p">(</span><span class="n">neural_net_keep_prob_input</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Image Input Tests Passed.
Label Input Tests Passed.
Keep Prob Tests Passed.
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#21367;&#31215;&#21644;&#26368;&#22823;&#27744;&#21270;&#23618;">&#21367;&#31215;&#21644;&#26368;&#22823;&#27744;&#21270;&#23618;<a class="anchor-link" href="#&#21367;&#31215;&#21644;&#26368;&#22823;&#27744;&#21270;&#23618;">&#182;</a></h3><p>卷积层级适合处理图片。对于此代码单元，你应该实现函数 <code>conv2d_maxpool</code> 以便应用卷积然后进行最大池化：</p>
<ul>
<li>使用 <code>conv_ksize</code>、<code>conv_num_outputs</code> 和 <code>x_tensor</code> 的形状创建权重（weight）和偏置（bias）。</li>
<li>使用权重和 <code>conv_strides</code> 对 <code>x_tensor</code> 应用卷积。<ul>
<li>建议使用我们建议的间距（padding），当然也可以使用任何其他间距。</li>
</ul>
</li>
<li>添加偏置</li>
<li>向卷积中添加非线性激活（nonlinear activation）</li>
<li>使用 <code>pool_ksize</code> 和 <code>pool_strides</code> 应用最大池化<ul>
<li>建议使用我们建议的间距（padding），当然也可以使用任何其他间距。</li>
</ul>
</li>
</ul>
<p><strong>注意</strong>：对于<strong>此层</strong>，<strong>请勿使用</strong> <a href="https://www.tensorflow.org/api_docs/python/tf/layers">TensorFlow Layers</a> 或 <a href="https://www.tensorflow.org/api_guides/python/contrib.layers">TensorFlow Layers (contrib)</a>，但是仍然可以使用 TensorFlow 的 <a href="https://www.tensorflow.org/api_docs/python/tf/nn">Neural Network</a> 包。对于所有<strong>其他层</strong>，你依然可以使用快捷方法。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[65]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">conv2d_maxpool</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">conv_num_outputs</span><span class="p">,</span> <span class="n">conv_ksize</span><span class="p">,</span> <span class="n">conv_strides</span><span class="p">,</span> <span class="n">pool_ksize</span><span class="p">,</span> <span class="n">pool_strides</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Apply convolution then max pooling to x_tensor</span>
<span class="sd">    :param x_tensor: TensorFlow Tensor</span>
<span class="sd">    :param conv_num_outputs: Number of outputs for the convolutional layer</span>
<span class="sd">    :param conv_ksize: kernal size 2-D Tuple for the convolutional layer</span>
<span class="sd">    :param conv_strides: Stride 2-D Tuple for convolution</span>
<span class="sd">    :param pool_ksize: kernal size 2-D Tuple for pool</span>
<span class="sd">    :param pool_strides: Stride 2-D Tuple for pool</span>
<span class="sd">    : return: A tensor that represents convolution and max pooling of x_tensor</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="n">W_conv</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span>
        <span class="n">tf</span><span class="o">.</span><span class="n">truncated_normal</span><span class="p">(</span>
            <span class="n">shape</span> <span class="o">=</span> <span class="p">[</span><span class="o">*</span><span class="n">conv_ksize</span><span class="p">,</span><span class="nb">int</span><span class="p">(</span><span class="n">x_tensor</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">3</span><span class="p">]),</span> <span class="n">conv_num_outputs</span><span class="p">],</span>
            <span class="n">stddev</span><span class="o">=</span><span class="mf">0.1</span><span class="p">))</span>
    <span class="n">b_conv</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">constant</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">shape</span> <span class="o">=</span> <span class="p">[</span><span class="n">conv_num_outputs</span><span class="p">]))</span>
    <span class="n">h_conv</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span>
        <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">conv2d</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">W_conv</span><span class="p">,</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="o">*</span><span class="n">conv_strides</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">padding</span> <span class="o">=</span> <span class="s2">&quot;SAME&quot;</span><span class="p">)</span>
        <span class="o">+</span> <span class="n">b_conv</span><span class="p">)</span>
    <span class="n">h_pool</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">max_pool</span><span class="p">(</span><span class="n">h_conv</span><span class="p">,</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="o">*</span><span class="n">pool_ksize</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="o">*</span><span class="n">pool_strides</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">padding</span> <span class="o">=</span> <span class="s2">&quot;SAME&quot;</span><span class="p">)</span>
    <span class="k">return</span> <span class="n">h_pool</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_con_pool</span><span class="p">(</span><span class="n">conv2d_maxpool</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#25153;&#24179;&#21270;&#23618;">&#25153;&#24179;&#21270;&#23618;<a class="anchor-link" href="#&#25153;&#24179;&#21270;&#23618;">&#182;</a></h3><p>实现 <code>flatten</code> 函数，将 <code>x_tensor</code> 的维度从四维张量（4-D tensor）变成二维张量。输出应该是形状（<em>部分大小（Batch Size）</em>，<em>扁平化图片大小（Flattened Image Size）</em>）。快捷方法：对于此层，你可以使用 <a href="https://www.tensorflow.org/api_docs/python/tf/layers">TensorFlow Layers</a> 或 <a href="https://www.tensorflow.org/api_guides/python/contrib.layers">TensorFlow Layers (contrib)</a> 包中的类。如果你想要更大挑战，可以仅使用其他 TensorFlow 程序包。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[66]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">flatten</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Flatten x_tensor to (Batch Size, Flattened Image Size)</span>
<span class="sd">    : x_tensor: A tensor of size (Batch Size, ...), where ... are the image dimensions.</span>
<span class="sd">    : return: A tensor of size (Batch Size, Flattened Image Size).</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="n">flattened_image_size</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">x_tensor</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> 
                               <span class="o">*</span> <span class="n">x_tensor</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
                               <span class="o">*</span> <span class="n">x_tensor</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
    <span class="k">return</span> <span class="n">tf</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">shape</span> <span class="o">=</span> <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">flattened_image_size</span><span class="p">])</span>

<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_flatten</span><span class="p">(</span><span class="n">flatten</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#20840;&#36830;&#25509;&#23618;">&#20840;&#36830;&#25509;&#23618;<a class="anchor-link" href="#&#20840;&#36830;&#25509;&#23618;">&#182;</a></h3><p>实现 <code>fully_conn</code> 函数，以向 <code>x_tensor</code> 应用完全连接的层级，形状为（<em>部分大小（Batch Size）</em>，<em>num_outputs</em>）。快捷方法：对于此层，你可以使用 <a href="https://www.tensorflow.org/api_docs/python/tf/layers">TensorFlow Layers</a> 或 <a href="https://www.tensorflow.org/api_guides/python/contrib.layers">TensorFlow Layers (contrib)</a> 包中的类。如果你想要更大挑战，可以仅使用其他 TensorFlow 程序包。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[67]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">fully_conn</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">num_outputs</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Apply a fully connected layer to x_tensor using weight and bias</span>
<span class="sd">    : x_tensor: A 2-D tensor where the first dimension is batch size.</span>
<span class="sd">    : num_outputs: The number of output that the new tensor should be.</span>
<span class="sd">    : return: A 2-D tensor where the second dimension is num_outputs.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="n">W_fc</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span>
        <span class="n">tf</span><span class="o">.</span><span class="n">truncated_normal</span><span class="p">(</span>
            <span class="n">shape</span> <span class="o">=</span> <span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">x_tensor</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span> <span class="n">num_outputs</span><span class="p">],</span>
            <span class="n">stddev</span> <span class="o">=</span> <span class="mf">0.1</span><span class="p">))</span>
    <span class="n">b_fc</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">constant</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">shape</span> <span class="o">=</span> <span class="p">[</span><span class="n">num_outputs</span><span class="p">]))</span>
    <span class="n">h_fc</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">W_fc</span><span class="p">)</span> <span class="o">+</span> <span class="n">b_fc</span><span class="p">)</span>
    <span class="k">return</span> <span class="n">h_fc</span>

<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_fully_conn</span><span class="p">(</span><span class="n">fully_conn</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#36755;&#20986;&#23618;">&#36755;&#20986;&#23618;<a class="anchor-link" href="#&#36755;&#20986;&#23618;">&#182;</a></h3><p>实现 <code>output</code> 函数，向 x_tensor 应用完全连接的层级，形状为（<em>部分大小（Batch Size）</em>，<em>num_outputs</em>）。快捷方法：对于此层，你可以使用 <a href="https://www.tensorflow.org/api_docs/python/tf/layers">TensorFlow Layers</a> 或 <a href="https://www.tensorflow.org/api_guides/python/contrib.layers">TensorFlow Layers (contrib)</a> 包中的类。如果你想要更大挑战，可以仅使用其他 TensorFlow 程序包。</p>
<p><strong>注意</strong>：该层级不应应用 Activation、softmax 或交叉熵（cross entropy）。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[68]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">output</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">num_outputs</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Apply a output layer to x_tensor using weight and bias</span>
<span class="sd">    : x_tensor: A 2-D tensor where the first dimension is batch size.</span>
<span class="sd">    : num_outputs: The number of output that the new tensor should be.</span>
<span class="sd">    : return: A 2-D tensor where the second dimension is num_outputs.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="n">W_fc</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span>
        <span class="n">tf</span><span class="o">.</span><span class="n">truncated_normal</span><span class="p">(</span>
            <span class="n">shape</span> <span class="o">=</span> <span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">x_tensor</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span> <span class="n">num_outputs</span><span class="p">],</span>
            <span class="n">stddev</span> <span class="o">=</span> <span class="mf">0.1</span><span class="p">))</span>
    <span class="n">b_fc</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">constant</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">shape</span> <span class="o">=</span> <span class="p">[</span><span class="n">num_outputs</span><span class="p">]))</span>
    <span class="n">h_fc</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">x_tensor</span><span class="p">,</span> <span class="n">W_fc</span><span class="p">)</span> <span class="o">+</span> <span class="n">b_fc</span>
    <span class="k">return</span> <span class="n">h_fc</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_output</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#21019;&#24314;&#21367;&#31215;&#27169;&#22411;">&#21019;&#24314;&#21367;&#31215;&#27169;&#22411;<a class="anchor-link" href="#&#21019;&#24314;&#21367;&#31215;&#27169;&#22411;">&#182;</a></h3><p>实现函数 <code>conv_net</code>， 创建卷积神经网络模型。该函数传入一批图片 <code>x</code>，并输出对数（logits）。使用你在上方创建的层创建此模型：</p>
<ul>
<li>应用 1、2 或 3 个卷积和最大池化层（Convolution and Max Pool layers）</li>
<li>应用一个扁平层（Flatten Layer）</li>
<li>应用 1、2 或 3 个完全连接层（Fully Connected Layers）</li>
<li>应用一个输出层（Output Layer）</li>
<li>返回输出</li>
<li>使用 <code>keep_prob</code> 向模型中的一个或多个层应用 <a href="https://www.tensorflow.org/api_docs/python/tf/nn/dropout">TensorFlow 的 Dropout</a></li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[69]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">conv_net</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Create a convolutional neural network model</span>
<span class="sd">    : x: Placeholder tensor that holds image data.</span>
<span class="sd">    : keep_prob: Placeholder tensor that hold dropout keep probability.</span>
<span class="sd">    : return: Tensor that represents logits</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Apply 1, 2, or 3 Convolution and Max Pool layers</span>
    <span class="c1">#    Play around with different number of outputs, kernel size and stride</span>
    <span class="c1"># Function Definition from Above:</span>
    <span class="c1">#    conv2d_maxpool(x_tensor, conv_num_outputs, conv_ksize, conv_strides, pool_ksize, pool_strides)</span>
    <span class="n">conv1</span> <span class="o">=</span> <span class="n">conv2d_maxpool</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">])</span>
    <span class="n">conv1_drop</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">dropout</span><span class="p">(</span><span class="n">conv1</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">)</span>
    <span class="n">conv2</span> <span class="o">=</span> <span class="n">conv2d_maxpool</span><span class="p">(</span><span class="n">conv1_drop</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="p">[</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">])</span>
    <span class="n">conv2_drop</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">dropout</span><span class="p">(</span><span class="n">conv2</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">)</span>
    

    <span class="c1"># TODO: Apply a Flatten Layer</span>
    <span class="c1"># Function Definition from Above:</span>
    <span class="c1">#   flatten(x_tensor)</span>
    <span class="n">flat1</span> <span class="o">=</span> <span class="n">flatten</span><span class="p">(</span><span class="n">conv2_drop</span><span class="p">)</span>
    
    <span class="n">flat1_drop</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">dropout</span><span class="p">(</span><span class="n">flat1</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">)</span>
    

    <span class="c1"># TODO: Apply 1, 2, or 3 Fully Connected Layers</span>
    <span class="c1">#    Play around with different number of outputs</span>
    <span class="c1"># Function Definition from Above:</span>
    <span class="c1">#   fully_conn(x_tensor, num_outputs)</span>
    <span class="n">fc1</span> <span class="o">=</span> <span class="n">fully_conn</span><span class="p">(</span><span class="n">flat1_drop</span><span class="p">,</span> <span class="mi">512</span><span class="p">)</span>
    <span class="n">fc1_drop</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">dropout</span><span class="p">(</span><span class="n">fc1</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">)</span>
    
    <span class="c1"># TODO: Apply an Output Layer</span>
    <span class="c1">#    Set this to the number of classes</span>
    <span class="c1"># Function Definition from Above:</span>
    <span class="c1">#   output(x_tensor, num_outputs)</span>
    <span class="n">y_out</span> <span class="o">=</span> <span class="n">output</span><span class="p">(</span><span class="n">fc1_drop</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
    
    
    <span class="c1"># TODO: return output</span>
    <span class="k">return</span> <span class="n">y_out</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>

<span class="c1">##############################</span>
<span class="c1">## Build the Neural Network ##</span>
<span class="c1">##############################</span>

<span class="c1"># Remove previous weights, bias, inputs, etc..</span>
<span class="n">tf</span><span class="o">.</span><span class="n">reset_default_graph</span><span class="p">()</span>

<span class="c1"># Inputs</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">neural_net_image_input</span><span class="p">((</span><span class="mi">32</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">neural_net_label_input</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
<span class="n">keep_prob</span> <span class="o">=</span> <span class="n">neural_net_keep_prob_input</span><span class="p">()</span>

<span class="c1"># Model</span>
<span class="n">logits</span> <span class="o">=</span> <span class="n">conv_net</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">)</span>

<span class="c1"># Name logits Tensor, so that is can be loaded from disk after training</span>
<span class="n">logits</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">identity</span><span class="p">(</span><span class="n">logits</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;logits&#39;</span><span class="p">)</span>

<span class="c1"># Loss and Optimizer</span>
<span class="n">cost</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">reduce_mean</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">softmax_cross_entropy_with_logits</span><span class="p">(</span><span class="n">logits</span><span class="o">=</span><span class="n">logits</span><span class="p">,</span> <span class="n">labels</span><span class="o">=</span><span class="n">y</span><span class="p">))</span>
<span class="n">optimizer</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">AdamOptimizer</span><span class="p">()</span><span class="o">.</span><span class="n">minimize</span><span class="p">(</span><span class="n">cost</span><span class="p">)</span>

<span class="c1"># Accuracy</span>
<span class="n">correct_pred</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">equal</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">logits</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">tf</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
<span class="n">accuracy</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">reduce_mean</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">correct_pred</span><span class="p">,</span> <span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;accuracy&#39;</span><span class="p">)</span>

<span class="n">tests</span><span class="o">.</span><span class="n">test_conv_net</span><span class="p">(</span><span class="n">conv_net</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Neural Network Built!
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#35757;&#32451;&#31070;&#32463;&#32593;&#32476;">&#35757;&#32451;&#31070;&#32463;&#32593;&#32476;<a class="anchor-link" href="#&#35757;&#32451;&#31070;&#32463;&#32593;&#32476;">&#182;</a></h2><h3 id="&#21333;&#27425;&#20248;&#21270;">&#21333;&#27425;&#20248;&#21270;<a class="anchor-link" href="#&#21333;&#27425;&#20248;&#21270;">&#182;</a></h3><p>实现函数 <code>train_neural_network</code> 以进行单次优化（single optimization）。该优化应该使用 <code>optimizer</code> 优化 <code>session</code>，其中 <code>feed_dict</code> 具有以下参数：</p>
<ul>
<li><code>x</code> 表示图片输入</li>
<li><code>y</code> 表示标签</li>
<li><code>keep_prob</code> 表示丢弃的保留率</li>
</ul>
<p>每个部分都会调用该函数，所以 <code>tf.global_variables_initializer()</code> 已经被调用。</p>
<p>注意：不需要返回任何内容。该函数只是用来优化神经网络。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[70]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">train_neural_network</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">optimizer</span><span class="p">,</span> <span class="n">keep_probability</span><span class="p">,</span> <span class="n">feature_batch</span><span class="p">,</span> <span class="n">label_batch</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Optimize the session on a batch of images and labels</span>
<span class="sd">    : session: Current TensorFlow session</span>
<span class="sd">    : optimizer: TensorFlow optimizer function</span>
<span class="sd">    : keep_probability: keep probability</span>
<span class="sd">    : feature_batch: Batch of Numpy image data</span>
<span class="sd">    : label_batch: Batch of Numpy label data</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="n">session</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">optimizer</span><span class="p">,</span> <span class="n">feed_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">x</span><span class="p">:</span> <span class="n">feature_batch</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">label_batch</span><span class="p">,</span> <span class="n">keep_prob</span><span class="p">:</span> <span class="n">keep_probability</span><span class="p">})</span>
    <span class="k">pass</span>


<span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">tests</span><span class="o">.</span><span class="n">test_train_nn</span><span class="p">(</span><span class="n">train_neural_network</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Tests Passed
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#26174;&#31034;&#25968;&#25454;">&#26174;&#31034;&#25968;&#25454;<a class="anchor-link" href="#&#26174;&#31034;&#25968;&#25454;">&#182;</a></h3><p>实现函数 <code>print_stats</code> 以输出损失和验证准确率。使用全局变量 <code>valid_features</code> 和 <code>valid_labels</code> 计算验证准确率。使用保留率 <code>1.0</code> 计算损失和验证准确率（loss and validation accuracy）。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">print_stats</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">feature_batch</span><span class="p">,</span> <span class="n">label_batch</span><span class="p">,</span> <span class="n">cost</span><span class="p">,</span> <span class="n">accuracy</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Print information about loss and validation accuracy</span>
<span class="sd">    : session: Current TensorFlow session</span>
<span class="sd">    : feature_batch: Batch of Numpy image data</span>
<span class="sd">    : label_batch: Batch of Numpy label data</span>
<span class="sd">    : cost: TensorFlow cost function</span>
<span class="sd">    : accuracy: TensorFlow accuracy function</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># TODO: Implement Function</span>
    <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; loss: </span><span class="si">%g</span><span class="s2">&quot;</span><span class="o">%</span><span class="k">session</span>.run(cost, feed_dict = {x: feature_batch, y: label_batch, keep_prob:1.0}), end=&#39;&#39;)
    <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; accuracy: </span><span class="si">%g</span><span class="s2">&quot;</span><span class="o">%</span><span class="k">session</span>.run(accuracy, feed_dict = {x: valid_features, y: valid_labels, keep_prob: 1.0}))
    <span class="k">pass</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#36229;&#21442;&#25968;">&#36229;&#21442;&#25968;<a class="anchor-link" href="#&#36229;&#21442;&#25968;">&#182;</a></h3><p>调试以下超参数：</p>
<ul>
<li>设置 <code>epochs</code> 表示神经网络停止学习或开始过拟合的迭代次数</li>
<li><p>设置 <code>batch_size</code>，表示机器内存允许的部分最大体积。大部分人设为以下常见内存大小：</p>
<ul>
<li>64</li>
<li>128</li>
<li>256</li>
<li>...</li>
</ul>
</li>
<li>设置 <code>keep_probability</code> 表示使用丢弃时保留节点的概率</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[0]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO: Tune Parameters</span>
<span class="n">epochs</span> <span class="o">=</span> <span class="mi">200</span>
<span class="n">batch_size</span> <span class="o">=</span> <span class="mi">512</span>
<span class="n">keep_probability</span> <span class="o">=</span> <span class="mf">0.4</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#22312;&#21333;&#20010;-CIFAR-10-&#37096;&#20998;&#19978;&#35757;&#32451;">&#22312;&#21333;&#20010; CIFAR-10 &#37096;&#20998;&#19978;&#35757;&#32451;<a class="anchor-link" href="#&#22312;&#21333;&#20010;-CIFAR-10-&#37096;&#20998;&#19978;&#35757;&#32451;">&#182;</a></h3><p>我们先用单个部分，而不是用所有的 CIFAR-10 批次训练神经网络。这样可以节省时间，并对模型进行迭代，以提高准确率。最终验证准确率达到 50% 或以上之后，在下一部分对所有数据运行模型。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[73]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Checking the Training on a Single Batch...&#39;</span><span class="p">)</span>
<span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>
    <span class="c1"># Initializing the variables</span>
    <span class="n">sess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">global_variables_initializer</span><span class="p">())</span>
    
    <span class="c1"># Training cycle</span>
    <span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">epochs</span><span class="p">):</span>
        <span class="n">batch_i</span> <span class="o">=</span> <span class="mi">1</span>
        <span class="k">for</span> <span class="n">batch_features</span><span class="p">,</span> <span class="n">batch_labels</span> <span class="ow">in</span> <span class="n">helper</span><span class="o">.</span><span class="n">load_preprocess_training_batch</span><span class="p">(</span><span class="n">batch_i</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">):</span>
            <span class="n">train_neural_network</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">optimizer</span><span class="p">,</span> <span class="n">keep_probability</span><span class="p">,</span> <span class="n">batch_features</span><span class="p">,</span> <span class="n">batch_labels</span><span class="p">)</span>
        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Epoch </span><span class="si">{:&gt;2}</span><span class="s1">, CIFAR-10 Batch </span><span class="si">{}</span><span class="s1">:  &#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">epoch</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">batch_i</span><span class="p">),</span> <span class="n">end</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
        <span class="n">print_stats</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">batch_features</span><span class="p">,</span> <span class="n">batch_labels</span><span class="p">,</span> <span class="n">cost</span><span class="p">,</span> <span class="n">accuracy</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Checking the Training on a Single Batch...
Epoch  1, CIFAR-10 Batch 1:   loss: 2.30167 accuracy: 0.1004
Epoch  2, CIFAR-10 Batch 1:   loss: 2.28667 accuracy: 0.131
Epoch  3, CIFAR-10 Batch 1:   loss: 2.28462 accuracy: 0.1684
Epoch  4, CIFAR-10 Batch 1:   loss: 2.29135 accuracy: 0.1712
Epoch  5, CIFAR-10 Batch 1:   loss: 2.29732 accuracy: 0.1472
Epoch  6, CIFAR-10 Batch 1:   loss: 2.29903 accuracy: 0.129
Epoch  7, CIFAR-10 Batch 1:   loss: 2.29951 accuracy: 0.1176
Epoch  8, CIFAR-10 Batch 1:   loss: 2.29948 accuracy: 0.1288
Epoch  9, CIFAR-10 Batch 1:   loss: 2.29919 accuracy: 0.138
Epoch 10, CIFAR-10 Batch 1:   loss: 2.29733 accuracy: 0.1372
Epoch 11, CIFAR-10 Batch 1:   loss: 2.29138 accuracy: 0.1538
Epoch 12, CIFAR-10 Batch 1:   loss: 2.2768 accuracy: 0.1828
Epoch 13, CIFAR-10 Batch 1:   loss: 2.25733 accuracy: 0.1844
Epoch 14, CIFAR-10 Batch 1:   loss: 2.2289 accuracy: 0.2082
Epoch 15, CIFAR-10 Batch 1:   loss: 2.19219 accuracy: 0.2134
Epoch 16, CIFAR-10 Batch 1:   loss: 2.15017 accuracy: 0.2196
Epoch 17, CIFAR-10 Batch 1:   loss: 2.11773 accuracy: 0.2254
Epoch 18, CIFAR-10 Batch 1:   loss: 2.11732 accuracy: 0.2394
Epoch 19, CIFAR-10 Batch 1:   loss: 2.08702 accuracy: 0.2502
Epoch 20, CIFAR-10 Batch 1:   loss: 2.08225 accuracy: 0.2584
Epoch 21, CIFAR-10 Batch 1:   loss: 2.06308 accuracy: 0.2738
Epoch 22, CIFAR-10 Batch 1:   loss: 2.07221 accuracy: 0.2882
Epoch 23, CIFAR-10 Batch 1:   loss: 2.04206 accuracy: 0.2826
Epoch 24, CIFAR-10 Batch 1:   loss: 2.03261 accuracy: 0.2954
Epoch 25, CIFAR-10 Batch 1:   loss: 2.02823 accuracy: 0.2922
Epoch 26, CIFAR-10 Batch 1:   loss: 2.00995 accuracy: 0.3002
Epoch 27, CIFAR-10 Batch 1:   loss: 2.01607 accuracy: 0.3136
Epoch 28, CIFAR-10 Batch 1:   loss: 1.99717 accuracy: 0.3142
Epoch 29, CIFAR-10 Batch 1:   loss: 1.9768 accuracy: 0.3212
Epoch 30, CIFAR-10 Batch 1:   loss: 1.96959 accuracy: 0.319
Epoch 31, CIFAR-10 Batch 1:   loss: 1.98145 accuracy: 0.3334
Epoch 32, CIFAR-10 Batch 1:   loss: 1.95909 accuracy: 0.3294
Epoch 33, CIFAR-10 Batch 1:   loss: 1.94869 accuracy: 0.3316
Epoch 34, CIFAR-10 Batch 1:   loss: 1.93054 accuracy: 0.339
Epoch 35, CIFAR-10 Batch 1:   loss: 1.93747 accuracy: 0.3402
Epoch 36, CIFAR-10 Batch 1:   loss: 1.91639 accuracy: 0.3396
Epoch 37, CIFAR-10 Batch 1:   loss: 1.92226 accuracy: 0.3468
Epoch 38, CIFAR-10 Batch 1:   loss: 1.9109 accuracy: 0.3448
Epoch 39, CIFAR-10 Batch 1:   loss: 1.89784 accuracy: 0.354
Epoch 40, CIFAR-10 Batch 1:   loss: 1.89242 accuracy: 0.3578
Epoch 41, CIFAR-10 Batch 1:   loss: 1.902 accuracy: 0.3608
Epoch 42, CIFAR-10 Batch 1:   loss: 1.88007 accuracy: 0.3576
Epoch 43, CIFAR-10 Batch 1:   loss: 1.86861 accuracy: 0.3626
Epoch 44, CIFAR-10 Batch 1:   loss: 1.85188 accuracy: 0.3682
Epoch 45, CIFAR-10 Batch 1:   loss: 1.85128 accuracy: 0.3706
Epoch 46, CIFAR-10 Batch 1:   loss: 1.83883 accuracy: 0.3736
Epoch 47, CIFAR-10 Batch 1:   loss: 1.83793 accuracy: 0.3744
Epoch 48, CIFAR-10 Batch 1:   loss: 1.85001 accuracy: 0.3744
Epoch 49, CIFAR-10 Batch 1:   loss: 1.81431 accuracy: 0.3776
Epoch 50, CIFAR-10 Batch 1:   loss: 1.81803 accuracy: 0.3852
Epoch 51, CIFAR-10 Batch 1:   loss: 1.80127 accuracy: 0.387
Epoch 52, CIFAR-10 Batch 1:   loss: 1.81871 accuracy: 0.3912
Epoch 53, CIFAR-10 Batch 1:   loss: 1.79564 accuracy: 0.3874
Epoch 54, CIFAR-10 Batch 1:   loss: 1.8025 accuracy: 0.3918
Epoch 55, CIFAR-10 Batch 1:   loss: 1.78204 accuracy: 0.395
Epoch 56, CIFAR-10 Batch 1:   loss: 1.77635 accuracy: 0.3948
Epoch 57, CIFAR-10 Batch 1:   loss: 1.78709 accuracy: 0.3942
Epoch 58, CIFAR-10 Batch 1:   loss: 1.76363 accuracy: 0.388
Epoch 59, CIFAR-10 Batch 1:   loss: 1.76854 accuracy: 0.3916
Epoch 60, CIFAR-10 Batch 1:   loss: 1.75455 accuracy: 0.3916
Epoch 61, CIFAR-10 Batch 1:   loss: 1.73582 accuracy: 0.398
Epoch 62, CIFAR-10 Batch 1:   loss: 1.73396 accuracy: 0.4008
Epoch 63, CIFAR-10 Batch 1:   loss: 1.75261 accuracy: 0.3988
Epoch 64, CIFAR-10 Batch 1:   loss: 1.7373 accuracy: 0.4012
Epoch 65, CIFAR-10 Batch 1:   loss: 1.71939 accuracy: 0.4026
Epoch 66, CIFAR-10 Batch 1:   loss: 1.72314 accuracy: 0.4112
Epoch 67, CIFAR-10 Batch 1:   loss: 1.72613 accuracy: 0.4054
Epoch 68, CIFAR-10 Batch 1:   loss: 1.72099 accuracy: 0.4014
Epoch 69, CIFAR-10 Batch 1:   loss: 1.70187 accuracy: 0.4138
Epoch 70, CIFAR-10 Batch 1:   loss: 1.71286 accuracy: 0.408
Epoch 71, CIFAR-10 Batch 1:   loss: 1.66873 accuracy: 0.4206
Epoch 72, CIFAR-10 Batch 1:   loss: 1.67089 accuracy: 0.4178
Epoch 73, CIFAR-10 Batch 1:   loss: 1.65431 accuracy: 0.4216
Epoch 74, CIFAR-10 Batch 1:   loss: 1.6497 accuracy: 0.4292
Epoch 75, CIFAR-10 Batch 1:   loss: 1.6425 accuracy: 0.425
Epoch 76, CIFAR-10 Batch 1:   loss: 1.64265 accuracy: 0.4256
Epoch 77, CIFAR-10 Batch 1:   loss: 1.6408 accuracy: 0.432
Epoch 78, CIFAR-10 Batch 1:   loss: 1.64842 accuracy: 0.432
Epoch 79, CIFAR-10 Batch 1:   loss: 1.63273 accuracy: 0.442
Epoch 80, CIFAR-10 Batch 1:   loss: 1.63687 accuracy: 0.4314
Epoch 81, CIFAR-10 Batch 1:   loss: 1.61716 accuracy: 0.437
Epoch 82, CIFAR-10 Batch 1:   loss: 1.60133 accuracy: 0.4368
Epoch 83, CIFAR-10 Batch 1:   loss: 1.62857 accuracy: 0.437
Epoch 84, CIFAR-10 Batch 1:   loss: 1.5995 accuracy: 0.4406
Epoch 85, CIFAR-10 Batch 1:   loss: 1.59755 accuracy: 0.4444
Epoch 86, CIFAR-10 Batch 1:   loss: 1.59774 accuracy: 0.4456
Epoch 87, CIFAR-10 Batch 1:   loss: 1.58902 accuracy: 0.4444
Epoch 88, CIFAR-10 Batch 1:   loss: 1.56697 accuracy: 0.45
Epoch 89, CIFAR-10 Batch 1:   loss: 1.57257 accuracy: 0.4558
Epoch 90, CIFAR-10 Batch 1:   loss: 1.5645 accuracy: 0.4488
Epoch 91, CIFAR-10 Batch 1:   loss: 1.57058 accuracy: 0.4534
Epoch 92, CIFAR-10 Batch 1:   loss: 1.55101 accuracy: 0.456
Epoch 93, CIFAR-10 Batch 1:   loss: 1.55712 accuracy: 0.4552
Epoch 94, CIFAR-10 Batch 1:   loss: 1.53586 accuracy: 0.46
Epoch 95, CIFAR-10 Batch 1:   loss: 1.53425 accuracy: 0.456
Epoch 96, CIFAR-10 Batch 1:   loss: 1.52922 accuracy: 0.4642
Epoch 97, CIFAR-10 Batch 1:   loss: 1.52052 accuracy: 0.4628
Epoch 98, CIFAR-10 Batch 1:   loss: 1.51902 accuracy: 0.4672
Epoch 99, CIFAR-10 Batch 1:   loss: 1.51393 accuracy: 0.4526
Epoch 100, CIFAR-10 Batch 1:   loss: 1.52602 accuracy: 0.4666
Epoch 101, CIFAR-10 Batch 1:   loss: 1.51782 accuracy: 0.4654
Epoch 102, CIFAR-10 Batch 1:   loss: 1.51258 accuracy: 0.4682
Epoch 103, CIFAR-10 Batch 1:   loss: 1.49892 accuracy: 0.465
Epoch 104, CIFAR-10 Batch 1:   loss: 1.48452 accuracy: 0.4682
Epoch 105, CIFAR-10 Batch 1:   loss: 1.47995 accuracy: 0.4744
Epoch 106, CIFAR-10 Batch 1:   loss: 1.46738 accuracy: 0.4688
Epoch 107, CIFAR-10 Batch 1:   loss: 1.46025 accuracy: 0.482
Epoch 108, CIFAR-10 Batch 1:   loss: 1.45367 accuracy: 0.4844
Epoch 109, CIFAR-10 Batch 1:   loss: 1.45854 accuracy: 0.473
Epoch 110, CIFAR-10 Batch 1:   loss: 1.45086 accuracy: 0.48
Epoch 111, CIFAR-10 Batch 1:   loss: 1.45694 accuracy: 0.4868
Epoch 112, CIFAR-10 Batch 1:   loss: 1.44371 accuracy: 0.4834
Epoch 113, CIFAR-10 Batch 1:   loss: 1.47109 accuracy: 0.4826
Epoch 114, CIFAR-10 Batch 1:   loss: 1.45264 accuracy: 0.4834
Epoch 115, CIFAR-10 Batch 1:   loss: 1.43509 accuracy: 0.4888
Epoch 116, CIFAR-10 Batch 1:   loss: 1.42119 accuracy: 0.4858
Epoch 117, CIFAR-10 Batch 1:   loss: 1.4372 accuracy: 0.482
Epoch 118, CIFAR-10 Batch 1:   loss: 1.40275 accuracy: 0.4894
Epoch 119, CIFAR-10 Batch 1:   loss: 1.41139 accuracy: 0.4954
Epoch 120, CIFAR-10 Batch 1:   loss: 1.4074 accuracy: 0.4908
Epoch 121, CIFAR-10 Batch 1:   loss: 1.38674 accuracy: 0.4968
Epoch 122, CIFAR-10 Batch 1:   loss: 1.39588 accuracy: 0.4928
Epoch 123, CIFAR-10 Batch 1:   loss: 1.37238 accuracy: 0.5002
Epoch 124, CIFAR-10 Batch 1:   loss: 1.38693 accuracy: 0.5
Epoch 125, CIFAR-10 Batch 1:   loss: 1.38219 accuracy: 0.4928
Epoch 126, CIFAR-10 Batch 1:   loss: 1.37787 accuracy: 0.5034
Epoch 127, CIFAR-10 Batch 1:   loss: 1.36303 accuracy: 0.5034
Epoch 128, CIFAR-10 Batch 1:   loss: 1.34883 accuracy: 0.5034
Epoch 129, CIFAR-10 Batch 1:   loss: 1.35064 accuracy: 0.5024
Epoch 130, CIFAR-10 Batch 1:   loss: 1.36705 accuracy: 0.5008
Epoch 131, CIFAR-10 Batch 1:   loss: 1.34115 accuracy: 0.5094
Epoch 132, CIFAR-10 Batch 1:   loss: 1.3336 accuracy: 0.5114
Epoch 133, CIFAR-10 Batch 1:   loss: 1.34922 accuracy: 0.5048
Epoch 134, CIFAR-10 Batch 1:   loss: 1.33156 accuracy: 0.5078
Epoch 135, CIFAR-10 Batch 1:   loss: 1.34128 accuracy: 0.515
Epoch 136, CIFAR-10 Batch 1:   loss: 1.32944 accuracy: 0.507
Epoch 137, CIFAR-10 Batch 1:   loss: 1.32791 accuracy: 0.5114
Epoch 138, CIFAR-10 Batch 1:   loss: 1.31454 accuracy: 0.5144
Epoch 139, CIFAR-10 Batch 1:   loss: 1.32675 accuracy: 0.5116
Epoch 140, CIFAR-10 Batch 1:   loss: 1.29822 accuracy: 0.5154
Epoch 141, CIFAR-10 Batch 1:   loss: 1.29707 accuracy: 0.5192
Epoch 142, CIFAR-10 Batch 1:   loss: 1.29636 accuracy: 0.5184
Epoch 143, CIFAR-10 Batch 1:   loss: 1.29593 accuracy: 0.521
Epoch 144, CIFAR-10 Batch 1:   loss: 1.3055 accuracy: 0.5254
Epoch 145, CIFAR-10 Batch 1:   loss: 1.25817 accuracy: 0.5212
Epoch 146, CIFAR-10 Batch 1:   loss: 1.27269 accuracy: 0.5154
Epoch 147, CIFAR-10 Batch 1:   loss: 1.2857 accuracy: 0.5176
Epoch 148, CIFAR-10 Batch 1:   loss: 1.26334 accuracy: 0.5194
Epoch 149, CIFAR-10 Batch 1:   loss: 1.27236 accuracy: 0.5198
Epoch 150, CIFAR-10 Batch 1:   loss: 1.27791 accuracy: 0.519
Epoch 151, CIFAR-10 Batch 1:   loss: 1.26065 accuracy: 0.5244
Epoch 152, CIFAR-10 Batch 1:   loss: 1.27092 accuracy: 0.5288
Epoch 153, CIFAR-10 Batch 1:   loss: 1.27574 accuracy: 0.5214
Epoch 154, CIFAR-10 Batch 1:   loss: 1.27128 accuracy: 0.5238
Epoch 155, CIFAR-10 Batch 1:   loss: 1.24617 accuracy: 0.5194
Epoch 156, CIFAR-10 Batch 1:   loss: 1.23735 accuracy: 0.5286
Epoch 157, CIFAR-10 Batch 1:   loss: 1.21785 accuracy: 0.5292
Epoch 158, CIFAR-10 Batch 1:   loss: 1.2313 accuracy: 0.531
Epoch 159, CIFAR-10 Batch 1:   loss: 1.23573 accuracy: 0.5304
Epoch 160, CIFAR-10 Batch 1:   loss: 1.2124 accuracy: 0.5336
Epoch 161, CIFAR-10 Batch 1:   loss: 1.24471 accuracy: 0.527
Epoch 162, CIFAR-10 Batch 1:   loss: 1.21848 accuracy: 0.54
Epoch 163, CIFAR-10 Batch 1:   loss: 1.20272 accuracy: 0.5372
Epoch 164, CIFAR-10 Batch 1:   loss: 1.21499 accuracy: 0.5342
Epoch 165, CIFAR-10 Batch 1:   loss: 1.20165 accuracy: 0.5416
Epoch 166, CIFAR-10 Batch 1:   loss: 1.1877 accuracy: 0.542
Epoch 167, CIFAR-10 Batch 1:   loss: 1.20692 accuracy: 0.5362
Epoch 168, CIFAR-10 Batch 1:   loss: 1.18196 accuracy: 0.5434
Epoch 169, CIFAR-10 Batch 1:   loss: 1.1878 accuracy: 0.54
Epoch 170, CIFAR-10 Batch 1:   loss: 1.17134 accuracy: 0.5464
Epoch 171, CIFAR-10 Batch 1:   loss: 1.16019 accuracy: 0.5408
Epoch 172, CIFAR-10 Batch 1:   loss: 1.16734 accuracy: 0.5484
Epoch 173, CIFAR-10 Batch 1:   loss: 1.15001 accuracy: 0.5462
Epoch 174, CIFAR-10 Batch 1:   loss: 1.15259 accuracy: 0.5496
Epoch 175, CIFAR-10 Batch 1:   loss: 1.14325 accuracy: 0.5426
Epoch 176, CIFAR-10 Batch 1:   loss: 1.16196 accuracy: 0.5432
Epoch 177, CIFAR-10 Batch 1:   loss: 1.17856 accuracy: 0.5454
Epoch 178, CIFAR-10 Batch 1:   loss: 1.15124 accuracy: 0.5438
Epoch 179, CIFAR-10 Batch 1:   loss: 1.12978 accuracy: 0.5502
Epoch 180, CIFAR-10 Batch 1:   loss: 1.14894 accuracy: 0.5412
Epoch 181, CIFAR-10 Batch 1:   loss: 1.14525 accuracy: 0.5456
Epoch 182, CIFAR-10 Batch 1:   loss: 1.13662 accuracy: 0.546
Epoch 183, CIFAR-10 Batch 1:   loss: 1.13336 accuracy: 0.5538
Epoch 184, CIFAR-10 Batch 1:   loss: 1.10819 accuracy: 0.556
Epoch 185, CIFAR-10 Batch 1:   loss: 1.11953 accuracy: 0.561
Epoch 186, CIFAR-10 Batch 1:   loss: 1.10255 accuracy: 0.5584
Epoch 187, CIFAR-10 Batch 1:   loss: 1.10686 accuracy: 0.56
Epoch 188, CIFAR-10 Batch 1:   loss: 1.11666 accuracy: 0.5572
Epoch 189, CIFAR-10 Batch 1:   loss: 1.10553 accuracy: 0.5604
Epoch 190, CIFAR-10 Batch 1:   loss: 1.10682 accuracy: 0.5618
Epoch 191, CIFAR-10 Batch 1:   loss: 1.09477 accuracy: 0.5614
Epoch 192, CIFAR-10 Batch 1:   loss: 1.0992 accuracy: 0.554
Epoch 193, CIFAR-10 Batch 1:   loss: 1.08005 accuracy: 0.563
Epoch 194, CIFAR-10 Batch 1:   loss: 1.09472 accuracy: 0.5604
Epoch 195, CIFAR-10 Batch 1:   loss: 1.10951 accuracy: 0.5576
Epoch 196, CIFAR-10 Batch 1:   loss: 1.10372 accuracy: 0.5624
Epoch 197, CIFAR-10 Batch 1:   loss: 1.06376 accuracy: 0.5632
Epoch 198, CIFAR-10 Batch 1:   loss: 1.07653 accuracy: 0.561
Epoch 199, CIFAR-10 Batch 1:   loss: 1.07778 accuracy: 0.5672
Epoch 200, CIFAR-10 Batch 1:   loss: 1.08624 accuracy: 0.5622
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#23436;&#20840;&#35757;&#32451;&#27169;&#22411;">&#23436;&#20840;&#35757;&#32451;&#27169;&#22411;<a class="anchor-link" href="#&#23436;&#20840;&#35757;&#32451;&#27169;&#22411;">&#182;</a></h3><p>现在，单个 CIFAR-10 部分的准确率已经不错了，试试所有五个部分吧。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[74]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="n">save_model_path</span> <span class="o">=</span> <span class="s1">&#39;./image_classification&#39;</span>

<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Training...&#39;</span><span class="p">)</span>
<span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>
    <span class="c1"># Initializing the variables</span>
    <span class="n">sess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">global_variables_initializer</span><span class="p">())</span>
    
    <span class="c1"># Training cycle</span>
    <span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">epochs</span><span class="p">):</span>
        <span class="c1"># Loop over all batches</span>
        <span class="n">n_batches</span> <span class="o">=</span> <span class="mi">5</span>
        <span class="k">for</span> <span class="n">batch_i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">n_batches</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span>
            <span class="k">for</span> <span class="n">batch_features</span><span class="p">,</span> <span class="n">batch_labels</span> <span class="ow">in</span> <span class="n">helper</span><span class="o">.</span><span class="n">load_preprocess_training_batch</span><span class="p">(</span><span class="n">batch_i</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">):</span>
                <span class="n">train_neural_network</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">optimizer</span><span class="p">,</span> <span class="n">keep_probability</span><span class="p">,</span> <span class="n">batch_features</span><span class="p">,</span> <span class="n">batch_labels</span><span class="p">)</span>
            <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Epoch </span><span class="si">{:&gt;2}</span><span class="s1">, CIFAR-10 Batch </span><span class="si">{}</span><span class="s1">:  &#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">epoch</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">batch_i</span><span class="p">),</span> <span class="n">end</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
            <span class="n">print_stats</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">batch_features</span><span class="p">,</span> <span class="n">batch_labels</span><span class="p">,</span> <span class="n">cost</span><span class="p">,</span> <span class="n">accuracy</span><span class="p">)</span>
            
    <span class="c1"># Save Model</span>
    <span class="n">saver</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">Saver</span><span class="p">()</span>
    <span class="n">save_path</span> <span class="o">=</span> <span class="n">saver</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">save_model_path</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>Training...
Epoch  1, CIFAR-10 Batch 1:   loss: 2.30912 accuracy: 0.1108
Epoch  1, CIFAR-10 Batch 2:   loss: 2.28775 accuracy: 0.1304
Epoch  1, CIFAR-10 Batch 3:   loss: 2.27942 accuracy: 0.178
Epoch  1, CIFAR-10 Batch 4:   loss: 2.27584 accuracy: 0.1902
Epoch  1, CIFAR-10 Batch 5:   loss: 2.2796 accuracy: 0.1764
Epoch  2, CIFAR-10 Batch 1:   loss: 2.29058 accuracy: 0.1626
Epoch  2, CIFAR-10 Batch 2:   loss: 2.28532 accuracy: 0.1736
Epoch  2, CIFAR-10 Batch 3:   loss: 2.278 accuracy: 0.1822
Epoch  2, CIFAR-10 Batch 4:   loss: 2.25673 accuracy: 0.1808
Epoch  2, CIFAR-10 Batch 5:   loss: 2.22409 accuracy: 0.1956
Epoch  3, CIFAR-10 Batch 1:   loss: 2.20716 accuracy: 0.2018
Epoch  3, CIFAR-10 Batch 2:   loss: 2.1478 accuracy: 0.2136
Epoch  3, CIFAR-10 Batch 3:   loss: 2.13888 accuracy: 0.2278
Epoch  3, CIFAR-10 Batch 4:   loss: 2.09141 accuracy: 0.2446
Epoch  3, CIFAR-10 Batch 5:   loss: 2.07668 accuracy: 0.2534
Epoch  4, CIFAR-10 Batch 1:   loss: 2.10284 accuracy: 0.2626
Epoch  4, CIFAR-10 Batch 2:   loss: 2.04413 accuracy: 0.2626
Epoch  4, CIFAR-10 Batch 3:   loss: 2.04098 accuracy: 0.2778
Epoch  4, CIFAR-10 Batch 4:   loss: 2.00262 accuracy: 0.2932
Epoch  4, CIFAR-10 Batch 5:   loss: 1.9976 accuracy: 0.2858
Epoch  5, CIFAR-10 Batch 1:   loss: 2.03413 accuracy: 0.2868
Epoch  5, CIFAR-10 Batch 2:   loss: 1.97098 accuracy: 0.311
Epoch  5, CIFAR-10 Batch 3:   loss: 1.96227 accuracy: 0.3192
Epoch  5, CIFAR-10 Batch 4:   loss: 1.92921 accuracy: 0.3204
Epoch  5, CIFAR-10 Batch 5:   loss: 1.93285 accuracy: 0.3164
Epoch  6, CIFAR-10 Batch 1:   loss: 1.96972 accuracy: 0.3248
Epoch  6, CIFAR-10 Batch 2:   loss: 1.90752 accuracy: 0.337
Epoch  6, CIFAR-10 Batch 3:   loss: 1.88468 accuracy: 0.338
Epoch  6, CIFAR-10 Batch 4:   loss: 1.85794 accuracy: 0.3342
Epoch  6, CIFAR-10 Batch 5:   loss: 1.87049 accuracy: 0.3308
Epoch  7, CIFAR-10 Batch 1:   loss: 1.92312 accuracy: 0.3448
Epoch  7, CIFAR-10 Batch 2:   loss: 1.86444 accuracy: 0.3482
Epoch  7, CIFAR-10 Batch 3:   loss: 1.81033 accuracy: 0.357
Epoch  7, CIFAR-10 Batch 4:   loss: 1.81058 accuracy: 0.3522
Epoch  7, CIFAR-10 Batch 5:   loss: 1.83656 accuracy: 0.3482
Epoch  8, CIFAR-10 Batch 1:   loss: 1.88922 accuracy: 0.3628
Epoch  8, CIFAR-10 Batch 2:   loss: 1.8176 accuracy: 0.3642
Epoch  8, CIFAR-10 Batch 3:   loss: 1.76652 accuracy: 0.3728
Epoch  8, CIFAR-10 Batch 4:   loss: 1.77151 accuracy: 0.3656
Epoch  8, CIFAR-10 Batch 5:   loss: 1.79463 accuracy: 0.3556
Epoch  9, CIFAR-10 Batch 1:   loss: 1.86234 accuracy: 0.362
Epoch  9, CIFAR-10 Batch 2:   loss: 1.79664 accuracy: 0.3718
Epoch  9, CIFAR-10 Batch 3:   loss: 1.72941 accuracy: 0.3758
Epoch  9, CIFAR-10 Batch 4:   loss: 1.73362 accuracy: 0.3792
Epoch  9, CIFAR-10 Batch 5:   loss: 1.78144 accuracy: 0.3576
Epoch 10, CIFAR-10 Batch 1:   loss: 1.82337 accuracy: 0.3762
Epoch 10, CIFAR-10 Batch 2:   loss: 1.7912 accuracy: 0.38
Epoch 10, CIFAR-10 Batch 3:   loss: 1.67754 accuracy: 0.392
Epoch 10, CIFAR-10 Batch 4:   loss: 1.70735 accuracy: 0.3808
Epoch 10, CIFAR-10 Batch 5:   loss: 1.74505 accuracy: 0.3712
Epoch 11, CIFAR-10 Batch 1:   loss: 1.80254 accuracy: 0.3928
Epoch 11, CIFAR-10 Batch 2:   loss: 1.74372 accuracy: 0.3886
Epoch 11, CIFAR-10 Batch 3:   loss: 1.62831 accuracy: 0.3998
Epoch 11, CIFAR-10 Batch 4:   loss: 1.66996 accuracy: 0.3938
Epoch 11, CIFAR-10 Batch 5:   loss: 1.70717 accuracy: 0.3826
Epoch 12, CIFAR-10 Batch 1:   loss: 1.76541 accuracy: 0.4006
Epoch 12, CIFAR-10 Batch 2:   loss: 1.72484 accuracy: 0.3978
Epoch 12, CIFAR-10 Batch 3:   loss: 1.58673 accuracy: 0.419
Epoch 12, CIFAR-10 Batch 4:   loss: 1.65501 accuracy: 0.4094
Epoch 12, CIFAR-10 Batch 5:   loss: 1.68647 accuracy: 0.3988
Epoch 13, CIFAR-10 Batch 1:   loss: 1.72166 accuracy: 0.404
Epoch 13, CIFAR-10 Batch 2:   loss: 1.73457 accuracy: 0.3978
Epoch 13, CIFAR-10 Batch 3:   loss: 1.55824 accuracy: 0.4102
Epoch 13, CIFAR-10 Batch 4:   loss: 1.62104 accuracy: 0.416
Epoch 13, CIFAR-10 Batch 5:   loss: 1.6443 accuracy: 0.4162
Epoch 14, CIFAR-10 Batch 1:   loss: 1.69323 accuracy: 0.4212
Epoch 14, CIFAR-10 Batch 2:   loss: 1.63577 accuracy: 0.4214
Epoch 14, CIFAR-10 Batch 3:   loss: 1.50719 accuracy: 0.4376
Epoch 14, CIFAR-10 Batch 4:   loss: 1.59394 accuracy: 0.4232
Epoch 14, CIFAR-10 Batch 5:   loss: 1.60992 accuracy: 0.4334
Epoch 15, CIFAR-10 Batch 1:   loss: 1.68526 accuracy: 0.4246
Epoch 15, CIFAR-10 Batch 2:   loss: 1.62651 accuracy: 0.4382
Epoch 15, CIFAR-10 Batch 3:   loss: 1.48382 accuracy: 0.4424
Epoch 15, CIFAR-10 Batch 4:   loss: 1.55872 accuracy: 0.4394
Epoch 15, CIFAR-10 Batch 5:   loss: 1.57379 accuracy: 0.4344
Epoch 16, CIFAR-10 Batch 1:   loss: 1.64214 accuracy: 0.4366
Epoch 16, CIFAR-10 Batch 2:   loss: 1.61412 accuracy: 0.4438
Epoch 16, CIFAR-10 Batch 3:   loss: 1.45009 accuracy: 0.4502
Epoch 16, CIFAR-10 Batch 4:   loss: 1.55725 accuracy: 0.4438
Epoch 16, CIFAR-10 Batch 5:   loss: 1.53716 accuracy: 0.45
Epoch 17, CIFAR-10 Batch 1:   loss: 1.63303 accuracy: 0.4496
Epoch 17, CIFAR-10 Batch 2:   loss: 1.59745 accuracy: 0.4448
Epoch 17, CIFAR-10 Batch 3:   loss: 1.42171 accuracy: 0.4652
Epoch 17, CIFAR-10 Batch 4:   loss: 1.52103 accuracy: 0.4474
Epoch 17, CIFAR-10 Batch 5:   loss: 1.5358 accuracy: 0.4464
Epoch 18, CIFAR-10 Batch 1:   loss: 1.59927 accuracy: 0.4542
Epoch 18, CIFAR-10 Batch 2:   loss: 1.53321 accuracy: 0.4714
Epoch 18, CIFAR-10 Batch 3:   loss: 1.38488 accuracy: 0.469
Epoch 18, CIFAR-10 Batch 4:   loss: 1.50117 accuracy: 0.4552
Epoch 18, CIFAR-10 Batch 5:   loss: 1.49201 accuracy: 0.4648
Epoch 19, CIFAR-10 Batch 1:   loss: 1.55613 accuracy: 0.4644
Epoch 19, CIFAR-10 Batch 2:   loss: 1.58268 accuracy: 0.4576
Epoch 19, CIFAR-10 Batch 3:   loss: 1.36031 accuracy: 0.484
Epoch 19, CIFAR-10 Batch 4:   loss: 1.46251 accuracy: 0.4698
Epoch 19, CIFAR-10 Batch 5:   loss: 1.45684 accuracy: 0.4812
Epoch 20, CIFAR-10 Batch 1:   loss: 1.57743 accuracy: 0.4642
Epoch 20, CIFAR-10 Batch 2:   loss: 1.48885 accuracy: 0.4838
Epoch 20, CIFAR-10 Batch 3:   loss: 1.35076 accuracy: 0.4878
Epoch 20, CIFAR-10 Batch 4:   loss: 1.41878 accuracy: 0.4824
Epoch 20, CIFAR-10 Batch 5:   loss: 1.4448 accuracy: 0.4818
Epoch 21, CIFAR-10 Batch 1:   loss: 1.51631 accuracy: 0.4824
Epoch 21, CIFAR-10 Batch 2:   loss: 1.46073 accuracy: 0.4966
Epoch 21, CIFAR-10 Batch 3:   loss: 1.32558 accuracy: 0.4926
Epoch 21, CIFAR-10 Batch 4:   loss: 1.3849 accuracy: 0.4936
Epoch 21, CIFAR-10 Batch 5:   loss: 1.44109 accuracy: 0.4788
Epoch 22, CIFAR-10 Batch 1:   loss: 1.48818 accuracy: 0.5032
Epoch 22, CIFAR-10 Batch 2:   loss: 1.52889 accuracy: 0.4676
Epoch 22, CIFAR-10 Batch 3:   loss: 1.31241 accuracy: 0.491
Epoch 22, CIFAR-10 Batch 4:   loss: 1.39186 accuracy: 0.4898
Epoch 22, CIFAR-10 Batch 5:   loss: 1.38311 accuracy: 0.4984
Epoch 23, CIFAR-10 Batch 1:   loss: 1.47633 accuracy: 0.4978
Epoch 23, CIFAR-10 Batch 2:   loss: 1.46618 accuracy: 0.4944
Epoch 23, CIFAR-10 Batch 3:   loss: 1.29045 accuracy: 0.504
Epoch 23, CIFAR-10 Batch 4:   loss: 1.34881 accuracy: 0.506
Epoch 23, CIFAR-10 Batch 5:   loss: 1.3932 accuracy: 0.4948
Epoch 24, CIFAR-10 Batch 1:   loss: 1.44386 accuracy: 0.5032
Epoch 24, CIFAR-10 Batch 2:   loss: 1.42473 accuracy: 0.508
Epoch 24, CIFAR-10 Batch 3:   loss: 1.26388 accuracy: 0.5234
Epoch 24, CIFAR-10 Batch 4:   loss: 1.34372 accuracy: 0.5104
Epoch 24, CIFAR-10 Batch 5:   loss: 1.36519 accuracy: 0.5046
Epoch 25, CIFAR-10 Batch 1:   loss: 1.44534 accuracy: 0.5082
Epoch 25, CIFAR-10 Batch 2:   loss: 1.37726 accuracy: 0.5146
Epoch 25, CIFAR-10 Batch 3:   loss: 1.26721 accuracy: 0.5164
Epoch 25, CIFAR-10 Batch 4:   loss: 1.31642 accuracy: 0.5156
Epoch 25, CIFAR-10 Batch 5:   loss: 1.32332 accuracy: 0.5234
Epoch 26, CIFAR-10 Batch 1:   loss: 1.4161 accuracy: 0.5164
Epoch 26, CIFAR-10 Batch 2:   loss: 1.37637 accuracy: 0.5244
Epoch 26, CIFAR-10 Batch 3:   loss: 1.24296 accuracy: 0.5218
Epoch 26, CIFAR-10 Batch 4:   loss: 1.28958 accuracy: 0.5224
Epoch 26, CIFAR-10 Batch 5:   loss: 1.34357 accuracy: 0.5076
Epoch 27, CIFAR-10 Batch 1:   loss: 1.45804 accuracy: 0.5154
Epoch 27, CIFAR-10 Batch 2:   loss: 1.33397 accuracy: 0.5316
Epoch 27, CIFAR-10 Batch 3:   loss: 1.2196 accuracy: 0.5356
Epoch 27, CIFAR-10 Batch 4:   loss: 1.29786 accuracy: 0.5232
Epoch 27, CIFAR-10 Batch 5:   loss: 1.31828 accuracy: 0.5268
Epoch 28, CIFAR-10 Batch 1:   loss: 1.41681 accuracy: 0.5232
Epoch 28, CIFAR-10 Batch 2:   loss: 1.32077 accuracy: 0.5338
Epoch 28, CIFAR-10 Batch 3:   loss: 1.23657 accuracy: 0.5272
Epoch 28, CIFAR-10 Batch 4:   loss: 1.27015 accuracy: 0.5262
Epoch 28, CIFAR-10 Batch 5:   loss: 1.29538 accuracy: 0.5362
Epoch 29, CIFAR-10 Batch 1:   loss: 1.37511 accuracy: 0.535
Epoch 29, CIFAR-10 Batch 2:   loss: 1.3452 accuracy: 0.5234
Epoch 29, CIFAR-10 Batch 3:   loss: 1.20477 accuracy: 0.5406
Epoch 29, CIFAR-10 Batch 4:   loss: 1.278 accuracy: 0.5294
Epoch 29, CIFAR-10 Batch 5:   loss: 1.32275 accuracy: 0.523
Epoch 30, CIFAR-10 Batch 1:   loss: 1.3817 accuracy: 0.529
Epoch 30, CIFAR-10 Batch 2:   loss: 1.29664 accuracy: 0.5454
Epoch 30, CIFAR-10 Batch 3:   loss: 1.21573 accuracy: 0.539
Epoch 30, CIFAR-10 Batch 4:   loss: 1.25126 accuracy: 0.5306
Epoch 30, CIFAR-10 Batch 5:   loss: 1.27887 accuracy: 0.5392
Epoch 31, CIFAR-10 Batch 1:   loss: 1.37132 accuracy: 0.5408
Epoch 31, CIFAR-10 Batch 2:   loss: 1.29068 accuracy: 0.5434
Epoch 31, CIFAR-10 Batch 3:   loss: 1.1932 accuracy: 0.545
Epoch 31, CIFAR-10 Batch 4:   loss: 1.24813 accuracy: 0.5454
Epoch 31, CIFAR-10 Batch 5:   loss: 1.29954 accuracy: 0.5266
Epoch 32, CIFAR-10 Batch 1:   loss: 1.36016 accuracy: 0.5404
Epoch 32, CIFAR-10 Batch 2:   loss: 1.28532 accuracy: 0.5486
Epoch 32, CIFAR-10 Batch 3:   loss: 1.191 accuracy: 0.5312
Epoch 32, CIFAR-10 Batch 4:   loss: 1.22592 accuracy: 0.5448
Epoch 32, CIFAR-10 Batch 5:   loss: 1.29286 accuracy: 0.5346
Epoch 33, CIFAR-10 Batch 1:   loss: 1.34572 accuracy: 0.5424
Epoch 33, CIFAR-10 Batch 2:   loss: 1.3154 accuracy: 0.5386
Epoch 33, CIFAR-10 Batch 3:   loss: 1.16475 accuracy: 0.5538
Epoch 33, CIFAR-10 Batch 4:   loss: 1.20698 accuracy: 0.55
Epoch 33, CIFAR-10 Batch 5:   loss: 1.24499 accuracy: 0.5436
Epoch 34, CIFAR-10 Batch 1:   loss: 1.35949 accuracy: 0.5398
Epoch 34, CIFAR-10 Batch 2:   loss: 1.31534 accuracy: 0.5498
Epoch 34, CIFAR-10 Batch 3:   loss: 1.13257 accuracy: 0.5546
Epoch 34, CIFAR-10 Batch 4:   loss: 1.17129 accuracy: 0.5578
Epoch 34, CIFAR-10 Batch 5:   loss: 1.23731 accuracy: 0.5464
Epoch 35, CIFAR-10 Batch 1:   loss: 1.34099 accuracy: 0.544
Epoch 35, CIFAR-10 Batch 2:   loss: 1.29646 accuracy: 0.5452
Epoch 35, CIFAR-10 Batch 3:   loss: 1.12836 accuracy: 0.5712
Epoch 35, CIFAR-10 Batch 4:   loss: 1.1927 accuracy: 0.5474
Epoch 35, CIFAR-10 Batch 5:   loss: 1.23805 accuracy: 0.5496
Epoch 36, CIFAR-10 Batch 1:   loss: 1.3371 accuracy: 0.5436
Epoch 36, CIFAR-10 Batch 2:   loss: 1.24515 accuracy: 0.5676
Epoch 36, CIFAR-10 Batch 3:   loss: 1.13838 accuracy: 0.5596
Epoch 36, CIFAR-10 Batch 4:   loss: 1.14898 accuracy: 0.5678
Epoch 36, CIFAR-10 Batch 5:   loss: 1.20897 accuracy: 0.5614
Epoch 37, CIFAR-10 Batch 1:   loss: 1.32545 accuracy: 0.5546
Epoch 37, CIFAR-10 Batch 2:   loss: 1.22407 accuracy: 0.5622
Epoch 37, CIFAR-10 Batch 3:   loss: 1.1365 accuracy: 0.5586
Epoch 37, CIFAR-10 Batch 4:   loss: 1.15816 accuracy: 0.5608
Epoch 37, CIFAR-10 Batch 5:   loss: 1.20626 accuracy: 0.5604
Epoch 38, CIFAR-10 Batch 1:   loss: 1.29789 accuracy: 0.5568
Epoch 38, CIFAR-10 Batch 2:   loss: 1.23172 accuracy: 0.5624
Epoch 38, CIFAR-10 Batch 3:   loss: 1.11236 accuracy: 0.5634
Epoch 38, CIFAR-10 Batch 4:   loss: 1.14188 accuracy: 0.5674
Epoch 38, CIFAR-10 Batch 5:   loss: 1.20541 accuracy: 0.5624
Epoch 39, CIFAR-10 Batch 1:   loss: 1.24357 accuracy: 0.5712
Epoch 39, CIFAR-10 Batch 2:   loss: 1.21595 accuracy: 0.5744
Epoch 39, CIFAR-10 Batch 3:   loss: 1.0982 accuracy: 0.5806
Epoch 39, CIFAR-10 Batch 4:   loss: 1.14922 accuracy: 0.568
Epoch 39, CIFAR-10 Batch 5:   loss: 1.17161 accuracy: 0.5658
Epoch 40, CIFAR-10 Batch 1:   loss: 1.26599 accuracy: 0.5756
Epoch 40, CIFAR-10 Batch 2:   loss: 1.23195 accuracy: 0.5678
Epoch 40, CIFAR-10 Batch 3:   loss: 1.07601 accuracy: 0.5952
Epoch 40, CIFAR-10 Batch 4:   loss: 1.12633 accuracy: 0.568
Epoch 40, CIFAR-10 Batch 5:   loss: 1.20746 accuracy: 0.56
Epoch 41, CIFAR-10 Batch 1:   loss: 1.26584 accuracy: 0.5774
Epoch 41, CIFAR-10 Batch 2:   loss: 1.20396 accuracy: 0.5772
Epoch 41, CIFAR-10 Batch 3:   loss: 1.089 accuracy: 0.585
Epoch 41, CIFAR-10 Batch 4:   loss: 1.10712 accuracy: 0.5832
Epoch 41, CIFAR-10 Batch 5:   loss: 1.15597 accuracy: 0.5774
Epoch 42, CIFAR-10 Batch 1:   loss: 1.25047 accuracy: 0.5882
Epoch 42, CIFAR-10 Batch 2:   loss: 1.20281 accuracy: 0.5746
Epoch 42, CIFAR-10 Batch 3:   loss: 1.0497 accuracy: 0.5938
Epoch 42, CIFAR-10 Batch 4:   loss: 1.08719 accuracy: 0.5892
Epoch 42, CIFAR-10 Batch 5:   loss: 1.18201 accuracy: 0.565
Epoch 43, CIFAR-10 Batch 1:   loss: 1.23007 accuracy: 0.586
Epoch 43, CIFAR-10 Batch 2:   loss: 1.2022 accuracy: 0.569
Epoch 43, CIFAR-10 Batch 3:   loss: 1.05039 accuracy: 0.5936
Epoch 43, CIFAR-10 Batch 4:   loss: 1.09703 accuracy: 0.5776
Epoch 43, CIFAR-10 Batch 5:   loss: 1.17299 accuracy: 0.565
Epoch 44, CIFAR-10 Batch 1:   loss: 1.22482 accuracy: 0.5936
Epoch 44, CIFAR-10 Batch 2:   loss: 1.26827 accuracy: 0.5516
Epoch 44, CIFAR-10 Batch 3:   loss: 1.04463 accuracy: 0.6032
Epoch 44, CIFAR-10 Batch 4:   loss: 1.09002 accuracy: 0.5832
Epoch 44, CIFAR-10 Batch 5:   loss: 1.18866 accuracy: 0.5598
Epoch 45, CIFAR-10 Batch 1:   loss: 1.18268 accuracy: 0.5968
Epoch 45, CIFAR-10 Batch 2:   loss: 1.20474 accuracy: 0.5728
Epoch 45, CIFAR-10 Batch 3:   loss: 1.02949 accuracy: 0.5946
Epoch 45, CIFAR-10 Batch 4:   loss: 1.082 accuracy: 0.597
Epoch 45, CIFAR-10 Batch 5:   loss: 1.11679 accuracy: 0.5884
Epoch 46, CIFAR-10 Batch 1:   loss: 1.2238 accuracy: 0.5906
Epoch 46, CIFAR-10 Batch 2:   loss: 1.24956 accuracy: 0.566
Epoch 46, CIFAR-10 Batch 3:   loss: 1.03615 accuracy: 0.5988
Epoch 46, CIFAR-10 Batch 4:   loss: 1.05648 accuracy: 0.592
Epoch 46, CIFAR-10 Batch 5:   loss: 1.15725 accuracy: 0.5752
Epoch 47, CIFAR-10 Batch 1:   loss: 1.21883 accuracy: 0.5812
Epoch 47, CIFAR-10 Batch 2:   loss: 1.19631 accuracy: 0.5728
Epoch 47, CIFAR-10 Batch 3:   loss: 1.0203 accuracy: 0.602
Epoch 47, CIFAR-10 Batch 4:   loss: 1.0582 accuracy: 0.5934
Epoch 47, CIFAR-10 Batch 5:   loss: 1.14182 accuracy: 0.5766
Epoch 48, CIFAR-10 Batch 1:   loss: 1.18289 accuracy: 0.5994
Epoch 48, CIFAR-10 Batch 2:   loss: 1.21937 accuracy: 0.5702
Epoch 48, CIFAR-10 Batch 3:   loss: 1.02184 accuracy: 0.6076
Epoch 48, CIFAR-10 Batch 4:   loss: 1.04412 accuracy: 0.5948
Epoch 48, CIFAR-10 Batch 5:   loss: 1.09552 accuracy: 0.588
Epoch 49, CIFAR-10 Batch 1:   loss: 1.18319 accuracy: 0.5998
Epoch 49, CIFAR-10 Batch 2:   loss: 1.1638 accuracy: 0.584
Epoch 49, CIFAR-10 Batch 3:   loss: 1.06082 accuracy: 0.5764
Epoch 49, CIFAR-10 Batch 4:   loss: 1.03809 accuracy: 0.5982
Epoch 49, CIFAR-10 Batch 5:   loss: 1.10784 accuracy: 0.59
Epoch 50, CIFAR-10 Batch 1:   loss: 1.161 accuracy: 0.6038
Epoch 50, CIFAR-10 Batch 2:   loss: 1.14021 accuracy: 0.598
Epoch 50, CIFAR-10 Batch 3:   loss: 1.04043 accuracy: 0.5872
Epoch 50, CIFAR-10 Batch 4:   loss: 1.01352 accuracy: 0.614
Epoch 50, CIFAR-10 Batch 5:   loss: 1.08172 accuracy: 0.598
Epoch 51, CIFAR-10 Batch 1:   loss: 1.20273 accuracy: 0.5976
Epoch 51, CIFAR-10 Batch 2:   loss: 1.1496 accuracy: 0.5858
Epoch 51, CIFAR-10 Batch 3:   loss: 1.01596 accuracy: 0.5962
Epoch 51, CIFAR-10 Batch 4:   loss: 1.02108 accuracy: 0.607
Epoch 51, CIFAR-10 Batch 5:   loss: 1.06085 accuracy: 0.6084
Epoch 52, CIFAR-10 Batch 1:   loss: 1.14244 accuracy: 0.6118
Epoch 52, CIFAR-10 Batch 2:   loss: 1.15703 accuracy: 0.5846
Epoch 52, CIFAR-10 Batch 3:   loss: 1.01902 accuracy: 0.6022
Epoch 52, CIFAR-10 Batch 4:   loss: 1.02632 accuracy: 0.6044
Epoch 52, CIFAR-10 Batch 5:   loss: 1.06664 accuracy: 0.6028
Epoch 53, CIFAR-10 Batch 1:   loss: 1.1555 accuracy: 0.6038
Epoch 53, CIFAR-10 Batch 2:   loss: 1.10327 accuracy: 0.6096
Epoch 53, CIFAR-10 Batch 3:   loss: 1.00624 accuracy: 0.6028
Epoch 53, CIFAR-10 Batch 4:   loss: 1.01797 accuracy: 0.601
Epoch 53, CIFAR-10 Batch 5:   loss: 1.10065 accuracy: 0.586
Epoch 54, CIFAR-10 Batch 1:   loss: 1.15347 accuracy: 0.6076
Epoch 54, CIFAR-10 Batch 2:   loss: 1.1191 accuracy: 0.5958
Epoch 54, CIFAR-10 Batch 3:   loss: 0.979843 accuracy: 0.6084
Epoch 54, CIFAR-10 Batch 4:   loss: 0.994201 accuracy: 0.6228
Epoch 54, CIFAR-10 Batch 5:   loss: 1.07758 accuracy: 0.6008
Epoch 55, CIFAR-10 Batch 1:   loss: 1.13533 accuracy: 0.6212
Epoch 55, CIFAR-10 Batch 2:   loss: 1.1283 accuracy: 0.5988
Epoch 55, CIFAR-10 Batch 3:   loss: 0.99719 accuracy: 0.6036
Epoch 55, CIFAR-10 Batch 4:   loss: 0.985166 accuracy: 0.621
Epoch 55, CIFAR-10 Batch 5:   loss: 1.06567 accuracy: 0.5992
Epoch 56, CIFAR-10 Batch 1:   loss: 1.14122 accuracy: 0.6128
Epoch 56, CIFAR-10 Batch 2:   loss: 1.07626 accuracy: 0.613
Epoch 56, CIFAR-10 Batch 3:   loss: 0.954736 accuracy: 0.6234
Epoch 56, CIFAR-10 Batch 4:   loss: 0.992174 accuracy: 0.6136
Epoch 56, CIFAR-10 Batch 5:   loss: 1.05937 accuracy: 0.6086
Epoch 57, CIFAR-10 Batch 1:   loss: 1.13149 accuracy: 0.6166
Epoch 57, CIFAR-10 Batch 2:   loss: 1.08045 accuracy: 0.6158
Epoch 57, CIFAR-10 Batch 3:   loss: 0.959136 accuracy: 0.6168
Epoch 57, CIFAR-10 Batch 4:   loss: 0.96614 accuracy: 0.6274
Epoch 57, CIFAR-10 Batch 5:   loss: 1.07761 accuracy: 0.6004
Epoch 58, CIFAR-10 Batch 1:   loss: 1.12749 accuracy: 0.6158
Epoch 58, CIFAR-10 Batch 2:   loss: 1.07673 accuracy: 0.6128
Epoch 58, CIFAR-10 Batch 3:   loss: 0.951256 accuracy: 0.6188
Epoch 58, CIFAR-10 Batch 4:   loss: 0.972749 accuracy: 0.6236
Epoch 58, CIFAR-10 Batch 5:   loss: 1.04511 accuracy: 0.61
Epoch 59, CIFAR-10 Batch 1:   loss: 1.14849 accuracy: 0.6174
Epoch 59, CIFAR-10 Batch 2:   loss: 1.03158 accuracy: 0.626
Epoch 59, CIFAR-10 Batch 3:   loss: 0.952313 accuracy: 0.6164
Epoch 59, CIFAR-10 Batch 4:   loss: 0.967531 accuracy: 0.6216
Epoch 59, CIFAR-10 Batch 5:   loss: 0.987434 accuracy: 0.6256
Epoch 60, CIFAR-10 Batch 1:   loss: 1.08516 accuracy: 0.637
Epoch 60, CIFAR-10 Batch 2:   loss: 1.0434 accuracy: 0.6226
Epoch 60, CIFAR-10 Batch 3:   loss: 0.928855 accuracy: 0.6344
Epoch 60, CIFAR-10 Batch 4:   loss: 0.951745 accuracy: 0.6296
Epoch 60, CIFAR-10 Batch 5:   loss: 1.00475 accuracy: 0.619
Epoch 61, CIFAR-10 Batch 1:   loss: 1.10221 accuracy: 0.6304
Epoch 61, CIFAR-10 Batch 2:   loss: 1.05309 accuracy: 0.6182
Epoch 61, CIFAR-10 Batch 3:   loss: 0.93784 accuracy: 0.6324
Epoch 61, CIFAR-10 Batch 4:   loss: 0.931843 accuracy: 0.6328
Epoch 61, CIFAR-10 Batch 5:   loss: 1.03231 accuracy: 0.6118
Epoch 62, CIFAR-10 Batch 1:   loss: 1.07641 accuracy: 0.6364
Epoch 62, CIFAR-10 Batch 2:   loss: 1.05888 accuracy: 0.6222
Epoch 62, CIFAR-10 Batch 3:   loss: 0.92974 accuracy: 0.627
Epoch 62, CIFAR-10 Batch 4:   loss: 0.956798 accuracy: 0.6248
Epoch 62, CIFAR-10 Batch 5:   loss: 1.01705 accuracy: 0.6166
Epoch 63, CIFAR-10 Batch 1:   loss: 1.06348 accuracy: 0.646
Epoch 63, CIFAR-10 Batch 2:   loss: 1.05801 accuracy: 0.614
Epoch 63, CIFAR-10 Batch 3:   loss: 0.961438 accuracy: 0.6196
Epoch 63, CIFAR-10 Batch 4:   loss: 0.977675 accuracy: 0.6196
Epoch 63, CIFAR-10 Batch 5:   loss: 0.995599 accuracy: 0.6232
Epoch 64, CIFAR-10 Batch 1:   loss: 1.07827 accuracy: 0.6412
Epoch 64, CIFAR-10 Batch 2:   loss: 1.0378 accuracy: 0.6228
Epoch 64, CIFAR-10 Batch 3:   loss: 0.913243 accuracy: 0.6378
Epoch 64, CIFAR-10 Batch 4:   loss: 0.926884 accuracy: 0.6338
Epoch 64, CIFAR-10 Batch 5:   loss: 0.994729 accuracy: 0.6172
Epoch 65, CIFAR-10 Batch 1:   loss: 1.06559 accuracy: 0.6444
Epoch 65, CIFAR-10 Batch 2:   loss: 1.04181 accuracy: 0.6222
Epoch 65, CIFAR-10 Batch 3:   loss: 0.91854 accuracy: 0.6348
Epoch 65, CIFAR-10 Batch 4:   loss: 0.929064 accuracy: 0.6368
Epoch 65, CIFAR-10 Batch 5:   loss: 0.997967 accuracy: 0.6196
Epoch 66, CIFAR-10 Batch 1:   loss: 1.05406 accuracy: 0.6416
Epoch 66, CIFAR-10 Batch 2:   loss: 1.03251 accuracy: 0.6262
Epoch 66, CIFAR-10 Batch 3:   loss: 0.919417 accuracy: 0.6336
Epoch 66, CIFAR-10 Batch 4:   loss: 0.927493 accuracy: 0.6436
Epoch 66, CIFAR-10 Batch 5:   loss: 1.04182 accuracy: 0.6042
Epoch 67, CIFAR-10 Batch 1:   loss: 1.02918 accuracy: 0.646
Epoch 67, CIFAR-10 Batch 2:   loss: 1.0446 accuracy: 0.6252
Epoch 67, CIFAR-10 Batch 3:   loss: 0.910338 accuracy: 0.6352
Epoch 67, CIFAR-10 Batch 4:   loss: 0.915163 accuracy: 0.6434
Epoch 67, CIFAR-10 Batch 5:   loss: 0.992162 accuracy: 0.623
Epoch 68, CIFAR-10 Batch 1:   loss: 1.04472 accuracy: 0.6448
Epoch 68, CIFAR-10 Batch 2:   loss: 1.00114 accuracy: 0.6322
Epoch 68, CIFAR-10 Batch 3:   loss: 0.902961 accuracy: 0.635
Epoch 68, CIFAR-10 Batch 4:   loss: 0.914366 accuracy: 0.641
Epoch 68, CIFAR-10 Batch 5:   loss: 0.95421 accuracy: 0.6406
Epoch 69, CIFAR-10 Batch 1:   loss: 1.02927 accuracy: 0.6518
Epoch 69, CIFAR-10 Batch 2:   loss: 0.991409 accuracy: 0.6466
Epoch 69, CIFAR-10 Batch 3:   loss: 0.87708 accuracy: 0.6508
Epoch 69, CIFAR-10 Batch 4:   loss: 0.932293 accuracy: 0.6396
Epoch 69, CIFAR-10 Batch 5:   loss: 0.960598 accuracy: 0.6348
Epoch 70, CIFAR-10 Batch 1:   loss: 1.02651 accuracy: 0.651
Epoch 70, CIFAR-10 Batch 2:   loss: 1.03264 accuracy: 0.6222
Epoch 70, CIFAR-10 Batch 3:   loss: 0.884435 accuracy: 0.6432
Epoch 70, CIFAR-10 Batch 4:   loss: 0.944496 accuracy: 0.6264
Epoch 70, CIFAR-10 Batch 5:   loss: 0.978 accuracy: 0.6284
Epoch 71, CIFAR-10 Batch 1:   loss: 1.01876 accuracy: 0.6492
Epoch 71, CIFAR-10 Batch 2:   loss: 0.993271 accuracy: 0.6368
Epoch 71, CIFAR-10 Batch 3:   loss: 0.915106 accuracy: 0.6302
Epoch 71, CIFAR-10 Batch 4:   loss: 0.902649 accuracy: 0.6512
Epoch 71, CIFAR-10 Batch 5:   loss: 0.935426 accuracy: 0.6466
Epoch 72, CIFAR-10 Batch 1:   loss: 1.01806 accuracy: 0.6492
Epoch 72, CIFAR-10 Batch 2:   loss: 0.998399 accuracy: 0.637
Epoch 72, CIFAR-10 Batch 3:   loss: 0.910749 accuracy: 0.6346
Epoch 72, CIFAR-10 Batch 4:   loss: 0.889622 accuracy: 0.6538
Epoch 72, CIFAR-10 Batch 5:   loss: 0.954381 accuracy: 0.6374
Epoch 73, CIFAR-10 Batch 1:   loss: 1.00015 accuracy: 0.6552
Epoch 73, CIFAR-10 Batch 2:   loss: 0.973373 accuracy: 0.6376
Epoch 73, CIFAR-10 Batch 3:   loss: 0.869279 accuracy: 0.6422
Epoch 73, CIFAR-10 Batch 4:   loss: 0.910354 accuracy: 0.6456
Epoch 73, CIFAR-10 Batch 5:   loss: 0.96299 accuracy: 0.6294
Epoch 74, CIFAR-10 Batch 1:   loss: 1.02236 accuracy: 0.659
Epoch 74, CIFAR-10 Batch 2:   loss: 0.999849 accuracy: 0.628
Epoch 74, CIFAR-10 Batch 3:   loss: 0.865583 accuracy: 0.6462
Epoch 74, CIFAR-10 Batch 4:   loss: 0.889763 accuracy: 0.647
Epoch 74, CIFAR-10 Batch 5:   loss: 0.985295 accuracy: 0.6244
Epoch 75, CIFAR-10 Batch 1:   loss: 1.00944 accuracy: 0.654
Epoch 75, CIFAR-10 Batch 2:   loss: 0.953682 accuracy: 0.649
Epoch 75, CIFAR-10 Batch 3:   loss: 0.868534 accuracy: 0.6486
Epoch 75, CIFAR-10 Batch 4:   loss: 0.903898 accuracy: 0.6438
Epoch 75, CIFAR-10 Batch 5:   loss: 0.962364 accuracy: 0.6296
Epoch 76, CIFAR-10 Batch 1:   loss: 1.02381 accuracy: 0.6608
Epoch 76, CIFAR-10 Batch 2:   loss: 0.977085 accuracy: 0.6396
Epoch 76, CIFAR-10 Batch 3:   loss: 0.877669 accuracy: 0.6386
Epoch 76, CIFAR-10 Batch 4:   loss: 0.89318 accuracy: 0.6476
Epoch 76, CIFAR-10 Batch 5:   loss: 0.992085 accuracy: 0.6226
Epoch 77, CIFAR-10 Batch 1:   loss: 0.964281 accuracy: 0.6614
Epoch 77, CIFAR-10 Batch 2:   loss: 0.957205 accuracy: 0.6472
Epoch 77, CIFAR-10 Batch 3:   loss: 0.854171 accuracy: 0.6568
Epoch 77, CIFAR-10 Batch 4:   loss: 0.892522 accuracy: 0.6456
Epoch 77, CIFAR-10 Batch 5:   loss: 0.942064 accuracy: 0.6376
Epoch 78, CIFAR-10 Batch 1:   loss: 1.00675 accuracy: 0.666
Epoch 78, CIFAR-10 Batch 2:   loss: 0.970601 accuracy: 0.638
Epoch 78, CIFAR-10 Batch 3:   loss: 0.88142 accuracy: 0.6376
Epoch 78, CIFAR-10 Batch 4:   loss: 0.863148 accuracy: 0.6586
Epoch 78, CIFAR-10 Batch 5:   loss: 0.980809 accuracy: 0.6298
Epoch 79, CIFAR-10 Batch 1:   loss: 1.01143 accuracy: 0.6622
Epoch 79, CIFAR-10 Batch 2:   loss: 0.944739 accuracy: 0.649
Epoch 79, CIFAR-10 Batch 3:   loss: 0.861261 accuracy: 0.6502
Epoch 79, CIFAR-10 Batch 4:   loss: 0.869005 accuracy: 0.6658
Epoch 79, CIFAR-10 Batch 5:   loss: 0.927216 accuracy: 0.6468
Epoch 80, CIFAR-10 Batch 1:   loss: 0.976267 accuracy: 0.6696
Epoch 80, CIFAR-10 Batch 2:   loss: 0.919858 accuracy: 0.6584
Epoch 80, CIFAR-10 Batch 3:   loss: 0.863351 accuracy: 0.642
Epoch 80, CIFAR-10 Batch 4:   loss: 0.860893 accuracy: 0.6652
Epoch 80, CIFAR-10 Batch 5:   loss: 0.92788 accuracy: 0.641
Epoch 81, CIFAR-10 Batch 1:   loss: 1.00542 accuracy: 0.6582
Epoch 81, CIFAR-10 Batch 2:   loss: 1.01721 accuracy: 0.6242
Epoch 81, CIFAR-10 Batch 3:   loss: 0.858554 accuracy: 0.6466
Epoch 81, CIFAR-10 Batch 4:   loss: 0.848936 accuracy: 0.6618
Epoch 81, CIFAR-10 Batch 5:   loss: 0.957819 accuracy: 0.6286
Epoch 82, CIFAR-10 Batch 1:   loss: 0.984002 accuracy: 0.6624
Epoch 82, CIFAR-10 Batch 2:   loss: 0.916205 accuracy: 0.6678
Epoch 82, CIFAR-10 Batch 3:   loss: 0.833957 accuracy: 0.6576
Epoch 82, CIFAR-10 Batch 4:   loss: 0.881697 accuracy: 0.6524
Epoch 82, CIFAR-10 Batch 5:   loss: 0.940829 accuracy: 0.635
Epoch 83, CIFAR-10 Batch 1:   loss: 0.978455 accuracy: 0.669
Epoch 83, CIFAR-10 Batch 2:   loss: 0.903228 accuracy: 0.6606
Epoch 83, CIFAR-10 Batch 3:   loss: 0.854184 accuracy: 0.658
Epoch 83, CIFAR-10 Batch 4:   loss: 0.862937 accuracy: 0.655
Epoch 83, CIFAR-10 Batch 5:   loss: 0.951119 accuracy: 0.6388
Epoch 84, CIFAR-10 Batch 1:   loss: 0.978833 accuracy: 0.6658
Epoch 84, CIFAR-10 Batch 2:   loss: 0.889179 accuracy: 0.6694
Epoch 84, CIFAR-10 Batch 3:   loss: 0.844755 accuracy: 0.652
Epoch 84, CIFAR-10 Batch 4:   loss: 0.844329 accuracy: 0.6742
Epoch 84, CIFAR-10 Batch 5:   loss: 0.887196 accuracy: 0.6632
Epoch 85, CIFAR-10 Batch 1:   loss: 0.996229 accuracy: 0.66
Epoch 85, CIFAR-10 Batch 2:   loss: 0.92517 accuracy: 0.661
Epoch 85, CIFAR-10 Batch 3:   loss: 0.837957 accuracy: 0.6602
Epoch 85, CIFAR-10 Batch 4:   loss: 0.837901 accuracy: 0.6668
Epoch 85, CIFAR-10 Batch 5:   loss: 0.911828 accuracy: 0.6502
Epoch 86, CIFAR-10 Batch 1:   loss: 0.980834 accuracy: 0.6622
Epoch 86, CIFAR-10 Batch 2:   loss: 0.913607 accuracy: 0.6538
Epoch 86, CIFAR-10 Batch 3:   loss: 0.814526 accuracy: 0.666
Epoch 86, CIFAR-10 Batch 4:   loss: 0.828211 accuracy: 0.6726
Epoch 86, CIFAR-10 Batch 5:   loss: 0.934211 accuracy: 0.6424
Epoch 87, CIFAR-10 Batch 1:   loss: 0.926857 accuracy: 0.6702
Epoch 87, CIFAR-10 Batch 2:   loss: 0.873256 accuracy: 0.6782
Epoch 87, CIFAR-10 Batch 3:   loss: 0.818579 accuracy: 0.6624
Epoch 87, CIFAR-10 Batch 4:   loss: 0.840638 accuracy: 0.6658
Epoch 87, CIFAR-10 Batch 5:   loss: 0.902523 accuracy: 0.6472
Epoch 88, CIFAR-10 Batch 1:   loss: 0.974227 accuracy: 0.6702
Epoch 88, CIFAR-10 Batch 2:   loss: 0.880562 accuracy: 0.6728
Epoch 88, CIFAR-10 Batch 3:   loss: 0.822177 accuracy: 0.6592
Epoch 88, CIFAR-10 Batch 4:   loss: 0.82436 accuracy: 0.6728
Epoch 88, CIFAR-10 Batch 5:   loss: 0.872372 accuracy: 0.6586
Epoch 89, CIFAR-10 Batch 1:   loss: 0.958395 accuracy: 0.671
Epoch 89, CIFAR-10 Batch 2:   loss: 0.879147 accuracy: 0.6682
Epoch 89, CIFAR-10 Batch 3:   loss: 0.827586 accuracy: 0.6614
Epoch 89, CIFAR-10 Batch 4:   loss: 0.836876 accuracy: 0.6664
Epoch 89, CIFAR-10 Batch 5:   loss: 0.887691 accuracy: 0.659
Epoch 90, CIFAR-10 Batch 1:   loss: 0.9575 accuracy: 0.6756
Epoch 90, CIFAR-10 Batch 2:   loss: 0.893292 accuracy: 0.664
Epoch 90, CIFAR-10 Batch 3:   loss: 0.826196 accuracy: 0.6572
Epoch 90, CIFAR-10 Batch 4:   loss: 0.825764 accuracy: 0.6732
Epoch 90, CIFAR-10 Batch 5:   loss: 0.85599 accuracy: 0.6658
Epoch 91, CIFAR-10 Batch 1:   loss: 0.939902 accuracy: 0.6788
Epoch 91, CIFAR-10 Batch 2:   loss: 0.89942 accuracy: 0.661
Epoch 91, CIFAR-10 Batch 3:   loss: 0.821386 accuracy: 0.6608
Epoch 91, CIFAR-10 Batch 4:   loss: 0.816536 accuracy: 0.6754
Epoch 91, CIFAR-10 Batch 5:   loss: 0.864213 accuracy: 0.6596
Epoch 92, CIFAR-10 Batch 1:   loss: 0.936813 accuracy: 0.6782
Epoch 92, CIFAR-10 Batch 2:   loss: 0.90481 accuracy: 0.6656
Epoch 92, CIFAR-10 Batch 3:   loss: 0.842155 accuracy: 0.6496
Epoch 92, CIFAR-10 Batch 4:   loss: 0.817913 accuracy: 0.666
Epoch 92, CIFAR-10 Batch 5:   loss: 0.858273 accuracy: 0.6618
Epoch 93, CIFAR-10 Batch 1:   loss: 0.946542 accuracy: 0.6712
Epoch 93, CIFAR-10 Batch 2:   loss: 0.908048 accuracy: 0.658
Epoch 93, CIFAR-10 Batch 3:   loss: 0.803824 accuracy: 0.664
Epoch 93, CIFAR-10 Batch 4:   loss: 0.830013 accuracy: 0.6678
Epoch 93, CIFAR-10 Batch 5:   loss: 0.868867 accuracy: 0.6626
Epoch 94, CIFAR-10 Batch 1:   loss: 0.913346 accuracy: 0.6772
Epoch 94, CIFAR-10 Batch 2:   loss: 0.878247 accuracy: 0.6744
Epoch 94, CIFAR-10 Batch 3:   loss: 0.804399 accuracy: 0.6654
Epoch 94, CIFAR-10 Batch 4:   loss: 0.808151 accuracy: 0.6726
Epoch 94, CIFAR-10 Batch 5:   loss: 0.865153 accuracy: 0.6592
Epoch 95, CIFAR-10 Batch 1:   loss: 0.936469 accuracy: 0.6788
Epoch 95, CIFAR-10 Batch 2:   loss: 0.904877 accuracy: 0.6562
Epoch 95, CIFAR-10 Batch 3:   loss: 0.821694 accuracy: 0.6554
Epoch 95, CIFAR-10 Batch 4:   loss: 0.788718 accuracy: 0.683
Epoch 95, CIFAR-10 Batch 5:   loss: 0.887126 accuracy: 0.6516
Epoch 96, CIFAR-10 Batch 1:   loss: 0.929794 accuracy: 0.6738
Epoch 96, CIFAR-10 Batch 2:   loss: 0.894579 accuracy: 0.6628
Epoch 96, CIFAR-10 Batch 3:   loss: 0.846743 accuracy: 0.6538
Epoch 96, CIFAR-10 Batch 4:   loss: 0.816984 accuracy: 0.667
Epoch 96, CIFAR-10 Batch 5:   loss: 0.84917 accuracy: 0.665
Epoch 97, CIFAR-10 Batch 1:   loss: 0.96196 accuracy: 0.6796
Epoch 97, CIFAR-10 Batch 2:   loss: 0.901887 accuracy: 0.6608
Epoch 97, CIFAR-10 Batch 3:   loss: 0.773646 accuracy: 0.6736
Epoch 97, CIFAR-10 Batch 4:   loss: 0.803705 accuracy: 0.669
Epoch 97, CIFAR-10 Batch 5:   loss: 0.853136 accuracy: 0.6674
Epoch 98, CIFAR-10 Batch 1:   loss: 0.927035 accuracy: 0.6826
Epoch 98, CIFAR-10 Batch 2:   loss: 0.860041 accuracy: 0.675
Epoch 98, CIFAR-10 Batch 3:   loss: 0.820921 accuracy: 0.6548
Epoch 98, CIFAR-10 Batch 4:   loss: 0.787264 accuracy: 0.6768
Epoch 98, CIFAR-10 Batch 5:   loss: 0.836326 accuracy: 0.6712
Epoch 99, CIFAR-10 Batch 1:   loss: 0.913757 accuracy: 0.6806
Epoch 99, CIFAR-10 Batch 2:   loss: 0.877576 accuracy: 0.6682
Epoch 99, CIFAR-10 Batch 3:   loss: 0.760672 accuracy: 0.6772
Epoch 99, CIFAR-10 Batch 4:   loss: 0.786479 accuracy: 0.6772
Epoch 99, CIFAR-10 Batch 5:   loss: 0.851448 accuracy: 0.668
Epoch 100, CIFAR-10 Batch 1:   loss: 0.909525 accuracy: 0.6832
Epoch 100, CIFAR-10 Batch 2:   loss: 0.84537 accuracy: 0.6784
Epoch 100, CIFAR-10 Batch 3:   loss: 0.780997 accuracy: 0.6752
Epoch 100, CIFAR-10 Batch 4:   loss: 0.776299 accuracy: 0.6836
Epoch 100, CIFAR-10 Batch 5:   loss: 0.847559 accuracy: 0.666
Epoch 101, CIFAR-10 Batch 1:   loss: 0.963798 accuracy: 0.6798
Epoch 101, CIFAR-10 Batch 2:   loss: 0.851401 accuracy: 0.6764
Epoch 101, CIFAR-10 Batch 3:   loss: 0.780468 accuracy: 0.6754
Epoch 101, CIFAR-10 Batch 4:   loss: 0.782445 accuracy: 0.6786
Epoch 101, CIFAR-10 Batch 5:   loss: 0.832039 accuracy: 0.669
Epoch 102, CIFAR-10 Batch 1:   loss: 0.900989 accuracy: 0.6866
Epoch 102, CIFAR-10 Batch 2:   loss: 0.843305 accuracy: 0.685
Epoch 102, CIFAR-10 Batch 3:   loss: 0.761183 accuracy: 0.6762
Epoch 102, CIFAR-10 Batch 4:   loss: 0.77732 accuracy: 0.6818
Epoch 102, CIFAR-10 Batch 5:   loss: 0.884062 accuracy: 0.6612
Epoch 103, CIFAR-10 Batch 1:   loss: 0.89666 accuracy: 0.681
Epoch 103, CIFAR-10 Batch 2:   loss: 0.855317 accuracy: 0.679
Epoch 103, CIFAR-10 Batch 3:   loss: 0.791729 accuracy: 0.6652
Epoch 103, CIFAR-10 Batch 4:   loss: 0.793539 accuracy: 0.6782
Epoch 103, CIFAR-10 Batch 5:   loss: 0.846376 accuracy: 0.6668
Epoch 104, CIFAR-10 Batch 1:   loss: 0.943565 accuracy: 0.6732
Epoch 104, CIFAR-10 Batch 2:   loss: 0.867046 accuracy: 0.6708
Epoch 104, CIFAR-10 Batch 3:   loss: 0.755519 accuracy: 0.6754
Epoch 104, CIFAR-10 Batch 4:   loss: 0.757404 accuracy: 0.686
Epoch 104, CIFAR-10 Batch 5:   loss: 0.825669 accuracy: 0.6716
Epoch 105, CIFAR-10 Batch 1:   loss: 0.901398 accuracy: 0.6818
Epoch 105, CIFAR-10 Batch 2:   loss: 0.836698 accuracy: 0.6766
Epoch 105, CIFAR-10 Batch 3:   loss: 0.760213 accuracy: 0.6734
Epoch 105, CIFAR-10 Batch 4:   loss: 0.783156 accuracy: 0.6828
Epoch 105, CIFAR-10 Batch 5:   loss: 0.827936 accuracy: 0.6758
Epoch 106, CIFAR-10 Batch 1:   loss: 0.919819 accuracy: 0.6752
Epoch 106, CIFAR-10 Batch 2:   loss: 0.840105 accuracy: 0.679
Epoch 106, CIFAR-10 Batch 3:   loss: 0.790575 accuracy: 0.6586
Epoch 106, CIFAR-10 Batch 4:   loss: 0.762663 accuracy: 0.6866
Epoch 106, CIFAR-10 Batch 5:   loss: 0.821186 accuracy: 0.6776
Epoch 107, CIFAR-10 Batch 1:   loss: 0.886618 accuracy: 0.6902
Epoch 107, CIFAR-10 Batch 2:   loss: 0.811065 accuracy: 0.6826
Epoch 107, CIFAR-10 Batch 3:   loss: 0.798819 accuracy: 0.6654
Epoch 107, CIFAR-10 Batch 4:   loss: 0.787584 accuracy: 0.686
Epoch 107, CIFAR-10 Batch 5:   loss: 0.819822 accuracy: 0.6836
Epoch 108, CIFAR-10 Batch 1:   loss: 0.884365 accuracy: 0.6894
Epoch 108, CIFAR-10 Batch 2:   loss: 0.831865 accuracy: 0.6762
Epoch 108, CIFAR-10 Batch 3:   loss: 0.750412 accuracy: 0.674
Epoch 108, CIFAR-10 Batch 4:   loss: 0.755375 accuracy: 0.6842
Epoch 108, CIFAR-10 Batch 5:   loss: 0.834314 accuracy: 0.6698
Epoch 109, CIFAR-10 Batch 1:   loss: 0.917376 accuracy: 0.6848
Epoch 109, CIFAR-10 Batch 2:   loss: 0.826437 accuracy: 0.6784
Epoch 109, CIFAR-10 Batch 3:   loss: 0.771276 accuracy: 0.6712
Epoch 109, CIFAR-10 Batch 4:   loss: 0.754437 accuracy: 0.6842
Epoch 109, CIFAR-10 Batch 5:   loss: 0.793013 accuracy: 0.681
Epoch 110, CIFAR-10 Batch 1:   loss: 0.864753 accuracy: 0.6924
Epoch 110, CIFAR-10 Batch 2:   loss: 0.80909 accuracy: 0.6786
Epoch 110, CIFAR-10 Batch 3:   loss: 0.795633 accuracy: 0.6576
Epoch 110, CIFAR-10 Batch 4:   loss: 0.765101 accuracy: 0.6838
Epoch 110, CIFAR-10 Batch 5:   loss: 0.796402 accuracy: 0.682
Epoch 111, CIFAR-10 Batch 1:   loss: 0.872524 accuracy: 0.6864
Epoch 111, CIFAR-10 Batch 2:   loss: 0.805434 accuracy: 0.6876
Epoch 111, CIFAR-10 Batch 3:   loss: 0.738602 accuracy: 0.6804
Epoch 111, CIFAR-10 Batch 4:   loss: 0.741752 accuracy: 0.6882
Epoch 111, CIFAR-10 Batch 5:   loss: 0.79618 accuracy: 0.683
Epoch 112, CIFAR-10 Batch 1:   loss: 0.907692 accuracy: 0.6812
Epoch 112, CIFAR-10 Batch 2:   loss: 0.838109 accuracy: 0.675
Epoch 112, CIFAR-10 Batch 3:   loss: 0.782694 accuracy: 0.6636
Epoch 112, CIFAR-10 Batch 4:   loss: 0.748133 accuracy: 0.6858
Epoch 112, CIFAR-10 Batch 5:   loss: 0.799845 accuracy: 0.6818
Epoch 113, CIFAR-10 Batch 1:   loss: 0.866331 accuracy: 0.6866
Epoch 113, CIFAR-10 Batch 2:   loss: 0.806978 accuracy: 0.6878
Epoch 113, CIFAR-10 Batch 3:   loss: 0.745354 accuracy: 0.6792
Epoch 113, CIFAR-10 Batch 4:   loss: 0.739581 accuracy: 0.6928
Epoch 113, CIFAR-10 Batch 5:   loss: 0.824699 accuracy: 0.6752
Epoch 114, CIFAR-10 Batch 1:   loss: 0.862157 accuracy: 0.6872
Epoch 114, CIFAR-10 Batch 2:   loss: 0.825656 accuracy: 0.674
Epoch 114, CIFAR-10 Batch 3:   loss: 0.727098 accuracy: 0.6804
Epoch 114, CIFAR-10 Batch 4:   loss: 0.738322 accuracy: 0.6892
Epoch 114, CIFAR-10 Batch 5:   loss: 0.781602 accuracy: 0.6864
Epoch 115, CIFAR-10 Batch 1:   loss: 0.865254 accuracy: 0.6916
Epoch 115, CIFAR-10 Batch 2:   loss: 0.785233 accuracy: 0.6888
Epoch 115, CIFAR-10 Batch 3:   loss: 0.76751 accuracy: 0.673
Epoch 115, CIFAR-10 Batch 4:   loss: 0.740378 accuracy: 0.6908
Epoch 115, CIFAR-10 Batch 5:   loss: 0.80295 accuracy: 0.6794
Epoch 116, CIFAR-10 Batch 1:   loss: 0.885092 accuracy: 0.6854
Epoch 116, CIFAR-10 Batch 2:   loss: 0.84929 accuracy: 0.6768
Epoch 116, CIFAR-10 Batch 3:   loss: 0.728886 accuracy: 0.6754
Epoch 116, CIFAR-10 Batch 4:   loss: 0.744693 accuracy: 0.6902
Epoch 116, CIFAR-10 Batch 5:   loss: 0.810399 accuracy: 0.675
Epoch 117, CIFAR-10 Batch 1:   loss: 0.867103 accuracy: 0.6888
Epoch 117, CIFAR-10 Batch 2:   loss: 0.796892 accuracy: 0.6866
Epoch 117, CIFAR-10 Batch 3:   loss: 0.747544 accuracy: 0.6756
Epoch 117, CIFAR-10 Batch 4:   loss: 0.765748 accuracy: 0.6802
Epoch 117, CIFAR-10 Batch 5:   loss: 0.79927 accuracy: 0.682
Epoch 118, CIFAR-10 Batch 1:   loss: 0.859221 accuracy: 0.6892
Epoch 118, CIFAR-10 Batch 2:   loss: 0.824675 accuracy: 0.6842
Epoch 118, CIFAR-10 Batch 3:   loss: 0.7331 accuracy: 0.6814
Epoch 118, CIFAR-10 Batch 4:   loss: 0.742485 accuracy: 0.6882
Epoch 118, CIFAR-10 Batch 5:   loss: 0.781481 accuracy: 0.6886
Epoch 119, CIFAR-10 Batch 1:   loss: 0.840724 accuracy: 0.6938
Epoch 119, CIFAR-10 Batch 2:   loss: 0.807993 accuracy: 0.6908
Epoch 119, CIFAR-10 Batch 3:   loss: 0.764665 accuracy: 0.669
Epoch 119, CIFAR-10 Batch 4:   loss: 0.725972 accuracy: 0.691
Epoch 119, CIFAR-10 Batch 5:   loss: 0.822043 accuracy: 0.672
Epoch 120, CIFAR-10 Batch 1:   loss: 0.872237 accuracy: 0.6934
Epoch 120, CIFAR-10 Batch 2:   loss: 0.783448 accuracy: 0.6982
Epoch 120, CIFAR-10 Batch 3:   loss: 0.70918 accuracy: 0.6918
Epoch 120, CIFAR-10 Batch 4:   loss: 0.735868 accuracy: 0.6906
Epoch 120, CIFAR-10 Batch 5:   loss: 0.806035 accuracy: 0.678
Epoch 121, CIFAR-10 Batch 1:   loss: 0.884271 accuracy: 0.6856
Epoch 121, CIFAR-10 Batch 2:   loss: 0.798079 accuracy: 0.6934
Epoch 121, CIFAR-10 Batch 3:   loss: 0.719572 accuracy: 0.6812
Epoch 121, CIFAR-10 Batch 4:   loss: 0.719761 accuracy: 0.6962
Epoch 121, CIFAR-10 Batch 5:   loss: 0.824399 accuracy: 0.6682
Epoch 122, CIFAR-10 Batch 1:   loss: 0.839132 accuracy: 0.6872
Epoch 122, CIFAR-10 Batch 2:   loss: 0.791302 accuracy: 0.6898
Epoch 122, CIFAR-10 Batch 3:   loss: 0.711425 accuracy: 0.686
Epoch 122, CIFAR-10 Batch 4:   loss: 0.748249 accuracy: 0.6822
Epoch 122, CIFAR-10 Batch 5:   loss: 0.829222 accuracy: 0.6734
Epoch 123, CIFAR-10 Batch 1:   loss: 0.839549 accuracy: 0.6988
Epoch 123, CIFAR-10 Batch 2:   loss: 0.783326 accuracy: 0.6892
Epoch 123, CIFAR-10 Batch 3:   loss: 0.712955 accuracy: 0.691
Epoch 123, CIFAR-10 Batch 4:   loss: 0.71451 accuracy: 0.6928
Epoch 123, CIFAR-10 Batch 5:   loss: 0.752033 accuracy: 0.6946
Epoch 124, CIFAR-10 Batch 1:   loss: 0.836711 accuracy: 0.7042
Epoch 124, CIFAR-10 Batch 2:   loss: 0.805942 accuracy: 0.6914
Epoch 124, CIFAR-10 Batch 3:   loss: 0.699906 accuracy: 0.6926
Epoch 124, CIFAR-10 Batch 4:   loss: 0.721015 accuracy: 0.6896
Epoch 124, CIFAR-10 Batch 5:   loss: 0.829893 accuracy: 0.6704
Epoch 125, CIFAR-10 Batch 1:   loss: 0.85433 accuracy: 0.6982
Epoch 125, CIFAR-10 Batch 2:   loss: 0.815381 accuracy: 0.6832
Epoch 125, CIFAR-10 Batch 3:   loss: 0.7484 accuracy: 0.6738
Epoch 125, CIFAR-10 Batch 4:   loss: 0.695801 accuracy: 0.7046
Epoch 125, CIFAR-10 Batch 5:   loss: 0.814692 accuracy: 0.6748
Epoch 126, CIFAR-10 Batch 1:   loss: 0.831685 accuracy: 0.6956
Epoch 126, CIFAR-10 Batch 2:   loss: 0.806933 accuracy: 0.6842
Epoch 126, CIFAR-10 Batch 3:   loss: 0.771737 accuracy: 0.6638
Epoch 126, CIFAR-10 Batch 4:   loss: 0.730478 accuracy: 0.6842
Epoch 126, CIFAR-10 Batch 5:   loss: 0.77547 accuracy: 0.6884
Epoch 127, CIFAR-10 Batch 1:   loss: 0.828299 accuracy: 0.6988
Epoch 127, CIFAR-10 Batch 2:   loss: 0.771354 accuracy: 0.7014
Epoch 127, CIFAR-10 Batch 3:   loss: 0.690554 accuracy: 0.6942
Epoch 127, CIFAR-10 Batch 4:   loss: 0.711778 accuracy: 0.6982
Epoch 127, CIFAR-10 Batch 5:   loss: 0.771338 accuracy: 0.6852
Epoch 128, CIFAR-10 Batch 1:   loss: 0.819265 accuracy: 0.7012
Epoch 128, CIFAR-10 Batch 2:   loss: 0.766052 accuracy: 0.7004
Epoch 128, CIFAR-10 Batch 3:   loss: 0.693761 accuracy: 0.69
Epoch 128, CIFAR-10 Batch 4:   loss: 0.725262 accuracy: 0.7014
Epoch 128, CIFAR-10 Batch 5:   loss: 0.751182 accuracy: 0.6944
Epoch 129, CIFAR-10 Batch 1:   loss: 0.852679 accuracy: 0.6964
Epoch 129, CIFAR-10 Batch 2:   loss: 0.78202 accuracy: 0.6896
Epoch 129, CIFAR-10 Batch 3:   loss: 0.713655 accuracy: 0.6856
Epoch 129, CIFAR-10 Batch 4:   loss: 0.733112 accuracy: 0.6878
Epoch 129, CIFAR-10 Batch 5:   loss: 0.807914 accuracy: 0.6782
Epoch 130, CIFAR-10 Batch 1:   loss: 0.847971 accuracy: 0.696
Epoch 130, CIFAR-10 Batch 2:   loss: 0.749409 accuracy: 0.6962
Epoch 130, CIFAR-10 Batch 3:   loss: 0.683871 accuracy: 0.6948
Epoch 130, CIFAR-10 Batch 4:   loss: 0.708872 accuracy: 0.697
Epoch 130, CIFAR-10 Batch 5:   loss: 0.767661 accuracy: 0.6872
Epoch 131, CIFAR-10 Batch 1:   loss: 0.829286 accuracy: 0.7034
Epoch 131, CIFAR-10 Batch 2:   loss: 0.76409 accuracy: 0.6948
Epoch 131, CIFAR-10 Batch 3:   loss: 0.673577 accuracy: 0.6928
Epoch 131, CIFAR-10 Batch 4:   loss: 0.706603 accuracy: 0.7048
Epoch 131, CIFAR-10 Batch 5:   loss: 0.795578 accuracy: 0.6856
Epoch 132, CIFAR-10 Batch 1:   loss: 0.858221 accuracy: 0.6894
Epoch 132, CIFAR-10 Batch 2:   loss: 0.752363 accuracy: 0.6976
Epoch 132, CIFAR-10 Batch 3:   loss: 0.693456 accuracy: 0.6892
Epoch 132, CIFAR-10 Batch 4:   loss: 0.697396 accuracy: 0.6998
Epoch 132, CIFAR-10 Batch 5:   loss: 0.757719 accuracy: 0.6928
Epoch 133, CIFAR-10 Batch 1:   loss: 0.854961 accuracy: 0.6916
Epoch 133, CIFAR-10 Batch 2:   loss: 0.76012 accuracy: 0.697
Epoch 133, CIFAR-10 Batch 3:   loss: 0.699509 accuracy: 0.6858
Epoch 133, CIFAR-10 Batch 4:   loss: 0.715877 accuracy: 0.691
Epoch 133, CIFAR-10 Batch 5:   loss: 0.773899 accuracy: 0.6832
Epoch 134, CIFAR-10 Batch 1:   loss: 0.811925 accuracy: 0.7016
Epoch 134, CIFAR-10 Batch 2:   loss: 0.793145 accuracy: 0.69
Epoch 134, CIFAR-10 Batch 3:   loss: 0.716233 accuracy: 0.679
Epoch 134, CIFAR-10 Batch 4:   loss: 0.69856 accuracy: 0.7002
Epoch 134, CIFAR-10 Batch 5:   loss: 0.776001 accuracy: 0.6826
Epoch 135, CIFAR-10 Batch 1:   loss: 0.850925 accuracy: 0.691
Epoch 135, CIFAR-10 Batch 2:   loss: 0.758287 accuracy: 0.6968
Epoch 135, CIFAR-10 Batch 3:   loss: 0.693054 accuracy: 0.6892
Epoch 135, CIFAR-10 Batch 4:   loss: 0.698438 accuracy: 0.702
Epoch 135, CIFAR-10 Batch 5:   loss: 0.743676 accuracy: 0.6916
Epoch 136, CIFAR-10 Batch 1:   loss: 0.812696 accuracy: 0.7008
Epoch 136, CIFAR-10 Batch 2:   loss: 0.74598 accuracy: 0.6972
Epoch 136, CIFAR-10 Batch 3:   loss: 0.67001 accuracy: 0.6888
Epoch 136, CIFAR-10 Batch 4:   loss: 0.697675 accuracy: 0.7034
Epoch 136, CIFAR-10 Batch 5:   loss: 0.757127 accuracy: 0.689
Epoch 137, CIFAR-10 Batch 1:   loss: 0.799596 accuracy: 0.7042
Epoch 137, CIFAR-10 Batch 2:   loss: 0.727028 accuracy: 0.7036
Epoch 137, CIFAR-10 Batch 3:   loss: 0.677881 accuracy: 0.6874
Epoch 137, CIFAR-10 Batch 4:   loss: 0.700708 accuracy: 0.7022
Epoch 137, CIFAR-10 Batch 5:   loss: 0.765101 accuracy: 0.687
Epoch 138, CIFAR-10 Batch 1:   loss: 0.81026 accuracy: 0.702
Epoch 138, CIFAR-10 Batch 2:   loss: 0.770315 accuracy: 0.696
Epoch 138, CIFAR-10 Batch 3:   loss: 0.684197 accuracy: 0.6906
Epoch 138, CIFAR-10 Batch 4:   loss: 0.700112 accuracy: 0.6996
Epoch 138, CIFAR-10 Batch 5:   loss: 0.728557 accuracy: 0.6958
Epoch 139, CIFAR-10 Batch 1:   loss: 0.824361 accuracy: 0.7028
Epoch 139, CIFAR-10 Batch 2:   loss: 0.749233 accuracy: 0.6998
Epoch 139, CIFAR-10 Batch 3:   loss: 0.679272 accuracy: 0.695
Epoch 139, CIFAR-10 Batch 4:   loss: 0.685254 accuracy: 0.7018
Epoch 139, CIFAR-10 Batch 5:   loss: 0.720767 accuracy: 0.7024
Epoch 140, CIFAR-10 Batch 1:   loss: 0.839688 accuracy: 0.697
Epoch 140, CIFAR-10 Batch 2:   loss: 0.741873 accuracy: 0.7008
Epoch 140, CIFAR-10 Batch 3:   loss: 0.663936 accuracy: 0.6916
Epoch 140, CIFAR-10 Batch 4:   loss: 0.708045 accuracy: 0.6902
Epoch 140, CIFAR-10 Batch 5:   loss: 0.738929 accuracy: 0.688
Epoch 141, CIFAR-10 Batch 1:   loss: 0.795685 accuracy: 0.7048
Epoch 141, CIFAR-10 Batch 2:   loss: 0.742225 accuracy: 0.7056
Epoch 141, CIFAR-10 Batch 3:   loss: 0.680585 accuracy: 0.6866
Epoch 141, CIFAR-10 Batch 4:   loss: 0.702437 accuracy: 0.6966
Epoch 141, CIFAR-10 Batch 5:   loss: 0.746946 accuracy: 0.6836
Epoch 142, CIFAR-10 Batch 1:   loss: 0.770938 accuracy: 0.7048
Epoch 142, CIFAR-10 Batch 2:   loss: 0.747953 accuracy: 0.7036
Epoch 142, CIFAR-10 Batch 3:   loss: 0.675185 accuracy: 0.6936
Epoch 142, CIFAR-10 Batch 4:   loss: 0.701019 accuracy: 0.7054
Epoch 142, CIFAR-10 Batch 5:   loss: 0.721717 accuracy: 0.6994
Epoch 143, CIFAR-10 Batch 1:   loss: 0.813753 accuracy: 0.6956
Epoch 143, CIFAR-10 Batch 2:   loss: 0.755487 accuracy: 0.695
Epoch 143, CIFAR-10 Batch 3:   loss: 0.682744 accuracy: 0.6902
Epoch 143, CIFAR-10 Batch 4:   loss: 0.685772 accuracy: 0.7038
Epoch 143, CIFAR-10 Batch 5:   loss: 0.734746 accuracy: 0.6984
Epoch 144, CIFAR-10 Batch 1:   loss: 0.797731 accuracy: 0.6964
Epoch 144, CIFAR-10 Batch 2:   loss: 0.750243 accuracy: 0.6974
Epoch 144, CIFAR-10 Batch 3:   loss: 0.678536 accuracy: 0.6956
Epoch 144, CIFAR-10 Batch 4:   loss: 0.687985 accuracy: 0.7056
Epoch 144, CIFAR-10 Batch 5:   loss: 0.739588 accuracy: 0.695
Epoch 145, CIFAR-10 Batch 1:   loss: 0.808914 accuracy: 0.6978
Epoch 145, CIFAR-10 Batch 2:   loss: 0.747691 accuracy: 0.7054
Epoch 145, CIFAR-10 Batch 3:   loss: 0.661765 accuracy: 0.7006
Epoch 145, CIFAR-10 Batch 4:   loss: 0.709933 accuracy: 0.6912
Epoch 145, CIFAR-10 Batch 5:   loss: 0.731419 accuracy: 0.6942
Epoch 146, CIFAR-10 Batch 1:   loss: 0.799616 accuracy: 0.7058
Epoch 146, CIFAR-10 Batch 2:   loss: 0.741534 accuracy: 0.7048
Epoch 146, CIFAR-10 Batch 3:   loss: 0.657936 accuracy: 0.7002
Epoch 146, CIFAR-10 Batch 4:   loss: 0.710809 accuracy: 0.6976
Epoch 146, CIFAR-10 Batch 5:   loss: 0.74946 accuracy: 0.6858
Epoch 147, CIFAR-10 Batch 1:   loss: 0.765978 accuracy: 0.7088
Epoch 147, CIFAR-10 Batch 2:   loss: 0.728067 accuracy: 0.704
Epoch 147, CIFAR-10 Batch 3:   loss: 0.660849 accuracy: 0.7028
Epoch 147, CIFAR-10 Batch 4:   loss: 0.686879 accuracy: 0.6998
Epoch 147, CIFAR-10 Batch 5:   loss: 0.714439 accuracy: 0.6938
Epoch 148, CIFAR-10 Batch 1:   loss: 0.751685 accuracy: 0.7058
Epoch 148, CIFAR-10 Batch 2:   loss: 0.782649 accuracy: 0.692
Epoch 148, CIFAR-10 Batch 3:   loss: 0.680624 accuracy: 0.6974
Epoch 148, CIFAR-10 Batch 4:   loss: 0.683483 accuracy: 0.7052
Epoch 148, CIFAR-10 Batch 5:   loss: 0.764405 accuracy: 0.6834
Epoch 149, CIFAR-10 Batch 1:   loss: 0.788475 accuracy: 0.702
Epoch 149, CIFAR-10 Batch 2:   loss: 0.751642 accuracy: 0.7022
Epoch 149, CIFAR-10 Batch 3:   loss: 0.675338 accuracy: 0.7
Epoch 149, CIFAR-10 Batch 4:   loss: 0.685753 accuracy: 0.7046
Epoch 149, CIFAR-10 Batch 5:   loss: 0.734325 accuracy: 0.6978
Epoch 150, CIFAR-10 Batch 1:   loss: 0.804573 accuracy: 0.7044
Epoch 150, CIFAR-10 Batch 2:   loss: 0.743577 accuracy: 0.7032
Epoch 150, CIFAR-10 Batch 3:   loss: 0.685783 accuracy: 0.6876
Epoch 150, CIFAR-10 Batch 4:   loss: 0.668512 accuracy: 0.7006
Epoch 150, CIFAR-10 Batch 5:   loss: 0.723203 accuracy: 0.6938
Epoch 151, CIFAR-10 Batch 1:   loss: 0.778165 accuracy: 0.7054
Epoch 151, CIFAR-10 Batch 2:   loss: 0.698348 accuracy: 0.7078
Epoch 151, CIFAR-10 Batch 3:   loss: 0.645894 accuracy: 0.7042
Epoch 151, CIFAR-10 Batch 4:   loss: 0.669235 accuracy: 0.7024
Epoch 151, CIFAR-10 Batch 5:   loss: 0.737847 accuracy: 0.6934
Epoch 152, CIFAR-10 Batch 1:   loss: 0.763887 accuracy: 0.7094
Epoch 152, CIFAR-10 Batch 2:   loss: 0.71462 accuracy: 0.7124
Epoch 152, CIFAR-10 Batch 3:   loss: 0.653206 accuracy: 0.7016
Epoch 152, CIFAR-10 Batch 4:   loss: 0.654561 accuracy: 0.7058
Epoch 152, CIFAR-10 Batch 5:   loss: 0.702048 accuracy: 0.7072
Epoch 153, CIFAR-10 Batch 1:   loss: 0.765581 accuracy: 0.7132
Epoch 153, CIFAR-10 Batch 2:   loss: 0.738167 accuracy: 0.701
Epoch 153, CIFAR-10 Batch 3:   loss: 0.627271 accuracy: 0.7014
Epoch 153, CIFAR-10 Batch 4:   loss: 0.659393 accuracy: 0.7066
Epoch 153, CIFAR-10 Batch 5:   loss: 0.715581 accuracy: 0.6992
Epoch 154, CIFAR-10 Batch 1:   loss: 0.798531 accuracy: 0.7038
Epoch 154, CIFAR-10 Batch 2:   loss: 0.722669 accuracy: 0.7058
Epoch 154, CIFAR-10 Batch 3:   loss: 0.6622 accuracy: 0.695
Epoch 154, CIFAR-10 Batch 4:   loss: 0.647275 accuracy: 0.7076
Epoch 154, CIFAR-10 Batch 5:   loss: 0.737722 accuracy: 0.6868
Epoch 155, CIFAR-10 Batch 1:   loss: 0.76591 accuracy: 0.7112
Epoch 155, CIFAR-10 Batch 2:   loss: 0.725173 accuracy: 0.707
Epoch 155, CIFAR-10 Batch 3:   loss: 0.636355 accuracy: 0.6988
Epoch 155, CIFAR-10 Batch 4:   loss: 0.650468 accuracy: 0.7096
Epoch 155, CIFAR-10 Batch 5:   loss: 0.713532 accuracy: 0.7016
Epoch 156, CIFAR-10 Batch 1:   loss: 0.776819 accuracy: 0.7078
Epoch 156, CIFAR-10 Batch 2:   loss: 0.748527 accuracy: 0.7018
Epoch 156, CIFAR-10 Batch 3:   loss: 0.627771 accuracy: 0.7008
Epoch 156, CIFAR-10 Batch 4:   loss: 0.647332 accuracy: 0.7108
Epoch 156, CIFAR-10 Batch 5:   loss: 0.725085 accuracy: 0.6946
Epoch 157, CIFAR-10 Batch 1:   loss: 0.79378 accuracy: 0.705
Epoch 157, CIFAR-10 Batch 2:   loss: 0.760013 accuracy: 0.6924
Epoch 157, CIFAR-10 Batch 3:   loss: 0.654862 accuracy: 0.7038
Epoch 157, CIFAR-10 Batch 4:   loss: 0.657214 accuracy: 0.7052
Epoch 157, CIFAR-10 Batch 5:   loss: 0.719037 accuracy: 0.6962
Epoch 158, CIFAR-10 Batch 1:   loss: 0.785757 accuracy: 0.7016
Epoch 158, CIFAR-10 Batch 2:   loss: 0.741136 accuracy: 0.6988
Epoch 158, CIFAR-10 Batch 3:   loss: 0.672715 accuracy: 0.6906
Epoch 158, CIFAR-10 Batch 4:   loss: 0.655053 accuracy: 0.7104
Epoch 158, CIFAR-10 Batch 5:   loss: 0.702252 accuracy: 0.7034
Epoch 159, CIFAR-10 Batch 1:   loss: 0.76169 accuracy: 0.7078
Epoch 159, CIFAR-10 Batch 2:   loss: 0.703488 accuracy: 0.7112
Epoch 159, CIFAR-10 Batch 3:   loss: 0.647567 accuracy: 0.7062
Epoch 159, CIFAR-10 Batch 4:   loss: 0.654374 accuracy: 0.709
Epoch 159, CIFAR-10 Batch 5:   loss: 0.684561 accuracy: 0.7034
Epoch 160, CIFAR-10 Batch 1:   loss: 0.742054 accuracy: 0.7136
Epoch 160, CIFAR-10 Batch 2:   loss: 0.726075 accuracy: 0.7082
Epoch 160, CIFAR-10 Batch 3:   loss: 0.696371 accuracy: 0.6792
Epoch 160, CIFAR-10 Batch 4:   loss: 0.647866 accuracy: 0.7104
Epoch 160, CIFAR-10 Batch 5:   loss: 0.701903 accuracy: 0.698
Epoch 161, CIFAR-10 Batch 1:   loss: 0.757923 accuracy: 0.7102
Epoch 161, CIFAR-10 Batch 2:   loss: 0.717698 accuracy: 0.708
Epoch 161, CIFAR-10 Batch 3:   loss: 0.670653 accuracy: 0.6898
Epoch 161, CIFAR-10 Batch 4:   loss: 0.646769 accuracy: 0.7058
Epoch 161, CIFAR-10 Batch 5:   loss: 0.726929 accuracy: 0.6926
Epoch 162, CIFAR-10 Batch 1:   loss: 0.756092 accuracy: 0.7058
Epoch 162, CIFAR-10 Batch 2:   loss: 0.720624 accuracy: 0.712
Epoch 162, CIFAR-10 Batch 3:   loss: 0.635455 accuracy: 0.7098
Epoch 162, CIFAR-10 Batch 4:   loss: 0.649404 accuracy: 0.7132
Epoch 162, CIFAR-10 Batch 5:   loss: 0.692015 accuracy: 0.7092
Epoch 163, CIFAR-10 Batch 1:   loss: 0.766755 accuracy: 0.7118
Epoch 163, CIFAR-10 Batch 2:   loss: 0.70316 accuracy: 0.7112
Epoch 163, CIFAR-10 Batch 3:   loss: 0.628319 accuracy: 0.707
Epoch 163, CIFAR-10 Batch 4:   loss: 0.63672 accuracy: 0.7146
Epoch 163, CIFAR-10 Batch 5:   loss: 0.710583 accuracy: 0.7028
Epoch 164, CIFAR-10 Batch 1:   loss: 0.761204 accuracy: 0.7118
Epoch 164, CIFAR-10 Batch 2:   loss: 0.697816 accuracy: 0.7168
Epoch 164, CIFAR-10 Batch 3:   loss: 0.642316 accuracy: 0.7026
Epoch 164, CIFAR-10 Batch 4:   loss: 0.637609 accuracy: 0.7116
Epoch 164, CIFAR-10 Batch 5:   loss: 0.707931 accuracy: 0.703
Epoch 165, CIFAR-10 Batch 1:   loss: 0.732477 accuracy: 0.7144
Epoch 165, CIFAR-10 Batch 2:   loss: 0.710088 accuracy: 0.7012
Epoch 165, CIFAR-10 Batch 3:   loss: 0.626564 accuracy: 0.7028
Epoch 165, CIFAR-10 Batch 4:   loss: 0.640821 accuracy: 0.709
Epoch 165, CIFAR-10 Batch 5:   loss: 0.718321 accuracy: 0.6992
Epoch 166, CIFAR-10 Batch 1:   loss: 0.746006 accuracy: 0.7096
Epoch 166, CIFAR-10 Batch 2:   loss: 0.686839 accuracy: 0.714
Epoch 166, CIFAR-10 Batch 3:   loss: 0.638737 accuracy: 0.7092
Epoch 166, CIFAR-10 Batch 4:   loss: 0.627928 accuracy: 0.7176
Epoch 166, CIFAR-10 Batch 5:   loss: 0.692114 accuracy: 0.7112
Epoch 167, CIFAR-10 Batch 1:   loss: 0.753561 accuracy: 0.7148
Epoch 167, CIFAR-10 Batch 2:   loss: 0.695634 accuracy: 0.7124
Epoch 167, CIFAR-10 Batch 3:   loss: 0.652477 accuracy: 0.7012
Epoch 167, CIFAR-10 Batch 4:   loss: 0.62866 accuracy: 0.7154
Epoch 167, CIFAR-10 Batch 5:   loss: 0.675834 accuracy: 0.7124
Epoch 168, CIFAR-10 Batch 1:   loss: 0.746157 accuracy: 0.7142
Epoch 168, CIFAR-10 Batch 2:   loss: 0.685602 accuracy: 0.7108
Epoch 168, CIFAR-10 Batch 3:   loss: 0.611515 accuracy: 0.7092
Epoch 168, CIFAR-10 Batch 4:   loss: 0.637417 accuracy: 0.7138
Epoch 168, CIFAR-10 Batch 5:   loss: 0.717544 accuracy: 0.697
Epoch 169, CIFAR-10 Batch 1:   loss: 0.737372 accuracy: 0.7088
Epoch 169, CIFAR-10 Batch 2:   loss: 0.719433 accuracy: 0.7044
Epoch 169, CIFAR-10 Batch 3:   loss: 0.618569 accuracy: 0.7108
Epoch 169, CIFAR-10 Batch 4:   loss: 0.63581 accuracy: 0.7116
Epoch 169, CIFAR-10 Batch 5:   loss: 0.688354 accuracy: 0.7074
Epoch 170, CIFAR-10 Batch 1:   loss: 0.77697 accuracy: 0.7148
Epoch 170, CIFAR-10 Batch 2:   loss: 0.696238 accuracy: 0.7082
Epoch 170, CIFAR-10 Batch 3:   loss: 0.64017 accuracy: 0.7006
Epoch 170, CIFAR-10 Batch 4:   loss: 0.62576 accuracy: 0.7114
Epoch 170, CIFAR-10 Batch 5:   loss: 0.680465 accuracy: 0.7062
Epoch 171, CIFAR-10 Batch 1:   loss: 0.754498 accuracy: 0.7124
Epoch 171, CIFAR-10 Batch 2:   loss: 0.700472 accuracy: 0.7124
Epoch 171, CIFAR-10 Batch 3:   loss: 0.626971 accuracy: 0.7044
Epoch 171, CIFAR-10 Batch 4:   loss: 0.629399 accuracy: 0.7118
Epoch 171, CIFAR-10 Batch 5:   loss: 0.686838 accuracy: 0.7084
Epoch 172, CIFAR-10 Batch 1:   loss: 0.754058 accuracy: 0.707
Epoch 172, CIFAR-10 Batch 2:   loss: 0.676016 accuracy: 0.7132
Epoch 172, CIFAR-10 Batch 3:   loss: 0.622509 accuracy: 0.7096
Epoch 172, CIFAR-10 Batch 4:   loss: 0.610132 accuracy: 0.7142
Epoch 172, CIFAR-10 Batch 5:   loss: 0.683829 accuracy: 0.708
Epoch 173, CIFAR-10 Batch 1:   loss: 0.718309 accuracy: 0.719
Epoch 173, CIFAR-10 Batch 2:   loss: 0.69182 accuracy: 0.7118
Epoch 173, CIFAR-10 Batch 3:   loss: 0.620897 accuracy: 0.7036
Epoch 173, CIFAR-10 Batch 4:   loss: 0.614806 accuracy: 0.7196
Epoch 173, CIFAR-10 Batch 5:   loss: 0.658635 accuracy: 0.7154
Epoch 174, CIFAR-10 Batch 1:   loss: 0.712145 accuracy: 0.7154
Epoch 174, CIFAR-10 Batch 2:   loss: 0.674439 accuracy: 0.7132
Epoch 174, CIFAR-10 Batch 3:   loss: 0.604366 accuracy: 0.7096
Epoch 174, CIFAR-10 Batch 4:   loss: 0.645685 accuracy: 0.7082
Epoch 174, CIFAR-10 Batch 5:   loss: 0.698221 accuracy: 0.7076
Epoch 175, CIFAR-10 Batch 1:   loss: 0.725757 accuracy: 0.7138
Epoch 175, CIFAR-10 Batch 2:   loss: 0.686585 accuracy: 0.7092
Epoch 175, CIFAR-10 Batch 3:   loss: 0.608713 accuracy: 0.7142
Epoch 175, CIFAR-10 Batch 4:   loss: 0.615806 accuracy: 0.7196
Epoch 175, CIFAR-10 Batch 5:   loss: 0.69308 accuracy: 0.7126
Epoch 176, CIFAR-10 Batch 1:   loss: 0.746346 accuracy: 0.7074
Epoch 176, CIFAR-10 Batch 2:   loss: 0.672941 accuracy: 0.7136
Epoch 176, CIFAR-10 Batch 3:   loss: 0.606784 accuracy: 0.7038
Epoch 176, CIFAR-10 Batch 4:   loss: 0.621893 accuracy: 0.7172
Epoch 176, CIFAR-10 Batch 5:   loss: 0.678007 accuracy: 0.7076
Epoch 177, CIFAR-10 Batch 1:   loss: 0.714556 accuracy: 0.7116
Epoch 177, CIFAR-10 Batch 2:   loss: 0.669384 accuracy: 0.7168
Epoch 177, CIFAR-10 Batch 3:   loss: 0.598987 accuracy: 0.709
Epoch 177, CIFAR-10 Batch 4:   loss: 0.621735 accuracy: 0.7114
Epoch 177, CIFAR-10 Batch 5:   loss: 0.667481 accuracy: 0.7066
Epoch 178, CIFAR-10 Batch 1:   loss: 0.736026 accuracy: 0.716
Epoch 178, CIFAR-10 Batch 2:   loss: 0.701339 accuracy: 0.7048
Epoch 178, CIFAR-10 Batch 3:   loss: 0.631204 accuracy: 0.6996
Epoch 178, CIFAR-10 Batch 4:   loss: 0.625977 accuracy: 0.7118
Epoch 178, CIFAR-10 Batch 5:   loss: 0.696379 accuracy: 0.7114
Epoch 179, CIFAR-10 Batch 1:   loss: 0.728457 accuracy: 0.7124
Epoch 179, CIFAR-10 Batch 2:   loss: 0.672059 accuracy: 0.7162
Epoch 179, CIFAR-10 Batch 3:   loss: 0.627991 accuracy: 0.7036
Epoch 179, CIFAR-10 Batch 4:   loss: 0.626459 accuracy: 0.7098
Epoch 179, CIFAR-10 Batch 5:   loss: 0.673888 accuracy: 0.7088
Epoch 180, CIFAR-10 Batch 1:   loss: 0.749209 accuracy: 0.7112
Epoch 180, CIFAR-10 Batch 2:   loss: 0.674082 accuracy: 0.7068
Epoch 180, CIFAR-10 Batch 3:   loss: 0.640075 accuracy: 0.7002
Epoch 180, CIFAR-10 Batch 4:   loss: 0.621428 accuracy: 0.717
Epoch 180, CIFAR-10 Batch 5:   loss: 0.694611 accuracy: 0.7042
Epoch 181, CIFAR-10 Batch 1:   loss: 0.733245 accuracy: 0.7108
Epoch 181, CIFAR-10 Batch 2:   loss: 0.683464 accuracy: 0.7092
Epoch 181, CIFAR-10 Batch 3:   loss: 0.643543 accuracy: 0.6924
Epoch 181, CIFAR-10 Batch 4:   loss: 0.610069 accuracy: 0.7156
Epoch 181, CIFAR-10 Batch 5:   loss: 0.669673 accuracy: 0.7082
Epoch 182, CIFAR-10 Batch 1:   loss: 0.695796 accuracy: 0.718
Epoch 182, CIFAR-10 Batch 2:   loss: 0.658499 accuracy: 0.7142
Epoch 182, CIFAR-10 Batch 3:   loss: 0.60088 accuracy: 0.7114
Epoch 182, CIFAR-10 Batch 4:   loss: 0.63513 accuracy: 0.7096
Epoch 182, CIFAR-10 Batch 5:   loss: 0.696757 accuracy: 0.6958
Epoch 183, CIFAR-10 Batch 1:   loss: 0.744916 accuracy: 0.715
Epoch 183, CIFAR-10 Batch 2:   loss: 0.667849 accuracy: 0.7158
Epoch 183, CIFAR-10 Batch 3:   loss: 0.613606 accuracy: 0.7122
Epoch 183, CIFAR-10 Batch 4:   loss: 0.60293 accuracy: 0.7146
Epoch 183, CIFAR-10 Batch 5:   loss: 0.661671 accuracy: 0.7118
Epoch 184, CIFAR-10 Batch 1:   loss: 0.717758 accuracy: 0.7146
Epoch 184, CIFAR-10 Batch 2:   loss: 0.677339 accuracy: 0.7148
Epoch 184, CIFAR-10 Batch 3:   loss: 0.609701 accuracy: 0.7102
Epoch 184, CIFAR-10 Batch 4:   loss: 0.63035 accuracy: 0.7124
Epoch 184, CIFAR-10 Batch 5:   loss: 0.658723 accuracy: 0.7152
Epoch 185, CIFAR-10 Batch 1:   loss: 0.705722 accuracy: 0.7228
Epoch 185, CIFAR-10 Batch 2:   loss: 0.66212 accuracy: 0.7218
Epoch 185, CIFAR-10 Batch 3:   loss: 0.612681 accuracy: 0.7114
Epoch 185, CIFAR-10 Batch 4:   loss: 0.606554 accuracy: 0.719
Epoch 185, CIFAR-10 Batch 5:   loss: 0.652831 accuracy: 0.7116
Epoch 186, CIFAR-10 Batch 1:   loss: 0.689671 accuracy: 0.7222
Epoch 186, CIFAR-10 Batch 2:   loss: 0.656388 accuracy: 0.7144
Epoch 186, CIFAR-10 Batch 3:   loss: 0.608671 accuracy: 0.717
Epoch 186, CIFAR-10 Batch 4:   loss: 0.605635 accuracy: 0.725
Epoch 186, CIFAR-10 Batch 5:   loss: 0.676264 accuracy: 0.7052
Epoch 187, CIFAR-10 Batch 1:   loss: 0.719121 accuracy: 0.715
Epoch 187, CIFAR-10 Batch 2:   loss: 0.693107 accuracy: 0.7096
Epoch 187, CIFAR-10 Batch 3:   loss: 0.603371 accuracy: 0.7198
Epoch 187, CIFAR-10 Batch 4:   loss: 0.597368 accuracy: 0.7206
Epoch 187, CIFAR-10 Batch 5:   loss: 0.641054 accuracy: 0.7126
Epoch 188, CIFAR-10 Batch 1:   loss: 0.703579 accuracy: 0.7178
Epoch 188, CIFAR-10 Batch 2:   loss: 0.653908 accuracy: 0.721
Epoch 188, CIFAR-10 Batch 3:   loss: 0.586926 accuracy: 0.72
Epoch 188, CIFAR-10 Batch 4:   loss: 0.605908 accuracy: 0.7188
Epoch 188, CIFAR-10 Batch 5:   loss: 0.645349 accuracy: 0.7142
Epoch 189, CIFAR-10 Batch 1:   loss: 0.715971 accuracy: 0.7204
Epoch 189, CIFAR-10 Batch 2:   loss: 0.693322 accuracy: 0.7028
Epoch 189, CIFAR-10 Batch 3:   loss: 0.594618 accuracy: 0.7154
Epoch 189, CIFAR-10 Batch 4:   loss: 0.608256 accuracy: 0.7186
Epoch 189, CIFAR-10 Batch 5:   loss: 0.649319 accuracy: 0.7168
Epoch 190, CIFAR-10 Batch 1:   loss: 0.716633 accuracy: 0.719
Epoch 190, CIFAR-10 Batch 2:   loss: 0.661857 accuracy: 0.7134
Epoch 190, CIFAR-10 Batch 3:   loss: 0.586349 accuracy: 0.7158
Epoch 190, CIFAR-10 Batch 4:   loss: 0.600576 accuracy: 0.7156
Epoch 190, CIFAR-10 Batch 5:   loss: 0.661203 accuracy: 0.7122
Epoch 191, CIFAR-10 Batch 1:   loss: 0.754776 accuracy: 0.7084
Epoch 191, CIFAR-10 Batch 2:   loss: 0.64729 accuracy: 0.715
Epoch 191, CIFAR-10 Batch 3:   loss: 0.596187 accuracy: 0.7044
Epoch 191, CIFAR-10 Batch 4:   loss: 0.584427 accuracy: 0.722
Epoch 191, CIFAR-10 Batch 5:   loss: 0.641445 accuracy: 0.717
Epoch 192, CIFAR-10 Batch 1:   loss: 0.701271 accuracy: 0.7214
Epoch 192, CIFAR-10 Batch 2:   loss: 0.654107 accuracy: 0.7178
Epoch 192, CIFAR-10 Batch 3:   loss: 0.583962 accuracy: 0.7194
Epoch 192, CIFAR-10 Batch 4:   loss: 0.59358 accuracy: 0.7218
Epoch 192, CIFAR-10 Batch 5:   loss: 0.640979 accuracy: 0.7128
Epoch 193, CIFAR-10 Batch 1:   loss: 0.699825 accuracy: 0.7238
Epoch 193, CIFAR-10 Batch 2:   loss: 0.6498 accuracy: 0.7208
Epoch 193, CIFAR-10 Batch 3:   loss: 0.601093 accuracy: 0.7174
Epoch 193, CIFAR-10 Batch 4:   loss: 0.594697 accuracy: 0.7234
Epoch 193, CIFAR-10 Batch 5:   loss: 0.654554 accuracy: 0.7146
Epoch 194, CIFAR-10 Batch 1:   loss: 0.726462 accuracy: 0.7194
Epoch 194, CIFAR-10 Batch 2:   loss: 0.653591 accuracy: 0.7192
Epoch 194, CIFAR-10 Batch 3:   loss: 0.598601 accuracy: 0.7054
Epoch 194, CIFAR-10 Batch 4:   loss: 0.59352 accuracy: 0.7278
Epoch 194, CIFAR-10 Batch 5:   loss: 0.635034 accuracy: 0.719
Epoch 195, CIFAR-10 Batch 1:   loss: 0.700176 accuracy: 0.7218
Epoch 195, CIFAR-10 Batch 2:   loss: 0.641786 accuracy: 0.7204
Epoch 195, CIFAR-10 Batch 3:   loss: 0.59519 accuracy: 0.709
Epoch 195, CIFAR-10 Batch 4:   loss: 0.589205 accuracy: 0.721
Epoch 195, CIFAR-10 Batch 5:   loss: 0.671022 accuracy: 0.706
Epoch 196, CIFAR-10 Batch 1:   loss: 0.699996 accuracy: 0.718
Epoch 196, CIFAR-10 Batch 2:   loss: 0.655823 accuracy: 0.7214
Epoch 196, CIFAR-10 Batch 3:   loss: 0.59994 accuracy: 0.7188
Epoch 196, CIFAR-10 Batch 4:   loss: 0.605089 accuracy: 0.7218
Epoch 196, CIFAR-10 Batch 5:   loss: 0.644799 accuracy: 0.7218
Epoch 197, CIFAR-10 Batch 1:   loss: 0.677521 accuracy: 0.7226
Epoch 197, CIFAR-10 Batch 2:   loss: 0.644166 accuracy: 0.7204
Epoch 197, CIFAR-10 Batch 3:   loss: 0.576334 accuracy: 0.7252
Epoch 197, CIFAR-10 Batch 4:   loss: 0.590224 accuracy: 0.7242
Epoch 197, CIFAR-10 Batch 5:   loss: 0.622987 accuracy: 0.717
Epoch 198, CIFAR-10 Batch 1:   loss: 0.71274 accuracy: 0.7244
Epoch 198, CIFAR-10 Batch 2:   loss: 0.671852 accuracy: 0.7136
Epoch 198, CIFAR-10 Batch 3:   loss: 0.596578 accuracy: 0.7072
Epoch 198, CIFAR-10 Batch 4:   loss: 0.578598 accuracy: 0.724
Epoch 198, CIFAR-10 Batch 5:   loss: 0.626314 accuracy: 0.7112
Epoch 199, CIFAR-10 Batch 1:   loss: 0.729207 accuracy: 0.716
Epoch 199, CIFAR-10 Batch 2:   loss: 0.629876 accuracy: 0.7194
Epoch 199, CIFAR-10 Batch 3:   loss: 0.587942 accuracy: 0.7128
Epoch 199, CIFAR-10 Batch 4:   loss: 0.579497 accuracy: 0.725
Epoch 199, CIFAR-10 Batch 5:   loss: 0.663474 accuracy: 0.7044
Epoch 200, CIFAR-10 Batch 1:   loss: 0.702851 accuracy: 0.717
Epoch 200, CIFAR-10 Batch 2:   loss: 0.650691 accuracy: 0.7186
Epoch 200, CIFAR-10 Batch 3:   loss: 0.608023 accuracy: 0.7128
Epoch 200, CIFAR-10 Batch 4:   loss: 0.588716 accuracy: 0.732
Epoch 200, CIFAR-10 Batch 5:   loss: 0.659427 accuracy: 0.7098
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#26816;&#26597;&#28857;">&#26816;&#26597;&#28857;<a class="anchor-link" href="#&#26816;&#26597;&#28857;">&#182;</a></h1><p>模型已保存到本地。</p>
<h2 id="&#27979;&#35797;&#27169;&#22411;">&#27979;&#35797;&#27169;&#22411;<a class="anchor-link" href="#&#27979;&#35797;&#27169;&#22411;">&#182;</a></h2><p>利用测试数据集测试你的模型。这将是最终的准确率。你的准确率应该高于 50%。如果没达到，请继续调整模型结构和参数。</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[75]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">DON&#39;T MODIFY ANYTHING IN THIS CELL</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="o">%</span><span class="k">matplotlib</span> inline
<span class="o">%</span><span class="k">config</span> InlineBackend.figure_format = &#39;retina&#39;

<span class="kn">import</span> <span class="nn">tensorflow</span> <span class="k">as</span> <span class="nn">tf</span>
<span class="kn">import</span> <span class="nn">pickle</span>
<span class="kn">import</span> <span class="nn">helper</span>
<span class="kn">import</span> <span class="nn">random</span>

<span class="c1"># Set batch size if not already set</span>
<span class="k">try</span><span class="p">:</span>
    <span class="k">if</span> <span class="n">batch_size</span><span class="p">:</span>
        <span class="k">pass</span>
<span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span>
    <span class="n">batch_size</span> <span class="o">=</span> <span class="mi">64</span>

<span class="n">save_model_path</span> <span class="o">=</span> <span class="s1">&#39;./image_classification&#39;</span>
<span class="n">n_samples</span> <span class="o">=</span> <span class="mi">4</span>
<span class="n">top_n_predictions</span> <span class="o">=</span> <span class="mi">3</span>

<span class="k">def</span> <span class="nf">test_model</span><span class="p">():</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Test the saved model against the test dataset</span>
<span class="sd">    &quot;&quot;&quot;</span>

    <span class="n">test_features</span><span class="p">,</span> <span class="n">test_labels</span> <span class="o">=</span> <span class="n">pickle</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="s1">&#39;preprocess_test.p&#39;</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">&#39;rb&#39;</span><span class="p">))</span>
    <span class="n">loaded_graph</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Graph</span><span class="p">()</span>

    <span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">(</span><span class="n">graph</span><span class="o">=</span><span class="n">loaded_graph</span><span class="p">)</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>
        <span class="c1"># Load model</span>
        <span class="n">loader</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">import_meta_graph</span><span class="p">(</span><span class="n">save_model_path</span> <span class="o">+</span> <span class="s1">&#39;.meta&#39;</span><span class="p">)</span>
        <span class="n">loader</span><span class="o">.</span><span class="n">restore</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">save_model_path</span><span class="p">)</span>

        <span class="c1"># Get Tensors from loaded model</span>
        <span class="n">loaded_x</span> <span class="o">=</span> <span class="n">loaded_graph</span><span class="o">.</span><span class="n">get_tensor_by_name</span><span class="p">(</span><span class="s1">&#39;x:0&#39;</span><span class="p">)</span>
        <span class="n">loaded_y</span> <span class="o">=</span> <span class="n">loaded_graph</span><span class="o">.</span><span class="n">get_tensor_by_name</span><span class="p">(</span><span class="s1">&#39;y:0&#39;</span><span class="p">)</span>
        <span class="n">loaded_keep_prob</span> <span class="o">=</span> <span class="n">loaded_graph</span><span class="o">.</span><span class="n">get_tensor_by_name</span><span class="p">(</span><span class="s1">&#39;keep_prob:0&#39;</span><span class="p">)</span>
        <span class="n">loaded_logits</span> <span class="o">=</span> <span class="n">loaded_graph</span><span class="o">.</span><span class="n">get_tensor_by_name</span><span class="p">(</span><span class="s1">&#39;logits:0&#39;</span><span class="p">)</span>
        <span class="n">loaded_acc</span> <span class="o">=</span> <span class="n">loaded_graph</span><span class="o">.</span><span class="n">get_tensor_by_name</span><span class="p">(</span><span class="s1">&#39;accuracy:0&#39;</span><span class="p">)</span>
        
        <span class="c1"># Get accuracy in batches for memory limitations</span>
        <span class="n">test_batch_acc_total</span> <span class="o">=</span> <span class="mi">0</span>
        <span class="n">test_batch_count</span> <span class="o">=</span> <span class="mi">0</span>
        
        <span class="k">for</span> <span class="n">test_feature_batch</span><span class="p">,</span> <span class="n">test_label_batch</span> <span class="ow">in</span> <span class="n">helper</span><span class="o">.</span><span class="n">batch_features_labels</span><span class="p">(</span><span class="n">test_features</span><span class="p">,</span> <span class="n">test_labels</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">):</span>
            <span class="n">test_batch_acc_total</span> <span class="o">+=</span> <span class="n">sess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span>
                <span class="n">loaded_acc</span><span class="p">,</span>
                <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">loaded_x</span><span class="p">:</span> <span class="n">test_feature_batch</span><span class="p">,</span> <span class="n">loaded_y</span><span class="p">:</span> <span class="n">test_label_batch</span><span class="p">,</span> <span class="n">loaded_keep_prob</span><span class="p">:</span> <span class="mf">1.0</span><span class="p">})</span>
            <span class="n">test_batch_count</span> <span class="o">+=</span> <span class="mi">1</span>

        <span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Testing Accuracy: </span><span class="si">{}</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">test_batch_acc_total</span><span class="o">/</span><span class="n">test_batch_count</span><span class="p">))</span>

        <span class="c1"># Print Random Samples</span>
        <span class="n">random_test_features</span><span class="p">,</span> <span class="n">random_test_labels</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">random</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">test_features</span><span class="p">,</span> <span class="n">test_labels</span><span class="p">)),</span> <span class="n">n_samples</span><span class="p">)))</span>
        <span class="n">random_test_predictions</span> <span class="o">=</span> <span class="n">sess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span>
            <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">top_k</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">softmax</span><span class="p">(</span><span class="n">loaded_logits</span><span class="p">),</span> <span class="n">top_n_predictions</span><span class="p">),</span>
            <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">loaded_x</span><span class="p">:</span> <span class="n">random_test_features</span><span class="p">,</span> <span class="n">loaded_y</span><span class="p">:</span> <span class="n">random_test_labels</span><span class="p">,</span> <span class="n">loaded_keep_prob</span><span class="p">:</span> <span class="mf">1.0</span><span class="p">})</span>
        <span class="n">helper</span><span class="o">.</span><span class="n">display_image_predictions</span><span class="p">(</span><span class="n">random_test_features</span><span class="p">,</span> <span class="n">random_test_labels</span><span class="p">,</span> <span class="n">random_test_predictions</span><span class="p">)</span>


<span class="n">test_model</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>INFO:tensorflow:Restoring parameters from ./image_classification
Testing Accuracy: 0.6978056073188782

</pre>
</div>
</div>

<div class="output_area">

<div class="prompt"></div>




<div class="output_png output_subarea ">
<img src="
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
"
width=354
height=319
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#20026;&#20309;&#20934;&#30830;&#29575;&#21482;&#26377;50-80%&#65311;">&#20026;&#20309;&#20934;&#30830;&#29575;&#21482;&#26377;50-80%&#65311;<a class="anchor-link" href="#&#20026;&#20309;&#20934;&#30830;&#29575;&#21482;&#26377;50-80%&#65311;">&#182;</a></h2><p>你可能想问，为何准确率不能更高了？首先，对于简单的 CNN 网络来说，50% 已经不低了。纯粹猜测的准确率为10%。但是，你可能注意到有人的准确率<a href="http://rodrigob.github.io/are_we_there_yet/build/classification_datasets_results.html#43494641522d3130">远远超过 80%</a>。这是因为我们还没有介绍所有的神经网络知识。我们还需要掌握一些其他技巧。</p>
<h2 id="&#25552;&#20132;&#39033;&#30446;">&#25552;&#20132;&#39033;&#30446;<a class="anchor-link" href="#&#25552;&#20132;&#39033;&#30446;">&#182;</a></h2><p>提交项目时，确保先运行所有单元，然后再保存记事本。将 notebook 文件另存为“dlnd_image_classification.ipynb”，再在目录 "File" -&gt; "Download as" 另存为 HTML 格式。请在提交的项目中包含 “helper.py” 和 “problem_unittests.py” 文件。</p>

</div>
</div>
</div>
    </div>
  </div>
</body>

 


</html>
